From e6c726f6964d3a200a727f5e77b7e4f5ec546699 Mon Sep 17 00:00:00 2001 From: Renato Neto Date: Fri, 10 Oct 2014 03:56:33 -0300 Subject: [PATCH 1/2] Subindo todos os arquivos --- .gitignore | 7 +- app/config/app.php | 6 + app/config/database.php | 10 + app/config/development/database.php | 10 + app/config/plugins.php | 7 + app/controllers/BaseController.php | 8 + app/controllers/IndexController.php | 11 + app/controllers/PhotoController.php | 158 + app/controllers/UserController.php | 132 + app/models/Post.php | 52 + app/models/PostLikes.php | 9 + app/models/User.php | 119 + app/models/UserFollowers.php | 10 + app/routes.php | 22 + app/samples/Facebook.php | 19 - app/samples/Mkt.php | 10 - app/views/layouts/default.php | 65 + app/views/photo/add.php | 24 + app/views/photo/list.php | 38 + app/views/user/perfil.php | 81 + app/views/user/register.php | 49 + composer.json | 49 +- composer.lock | 1479 ++++++- estrutura.sql | 126 + library/Skp/Auth/AuthPlugin.php | 26 + library/Skp/Auth/Guard.php | 161 + library/Skp/Auth/UserInterface.php | 24 + .../Controller/ControllerResolver.php | 51 + library/Skp/Database/EloquentPlugin.php | 36 + library/Skp/Foundation/Application.php | 99 + library/Skp/Foundation/Controller.php | 57 + library/Skp/Model.php | 30 + library/Skp/Plugin/PluginAbstract.php | 18 + library/Skp/Registry.php | 19 + library/Skp/Routing/Dispatcher.php | 37 + library/Skp/Support/helpers.php | 6 + library/Skp/Validation/Validator.php | 32 + phpunit.xml | 16 - public/.htaccess | 15 + public/css/semantic.min.css | 14 + public/css/styles.css | 223 + public/fonts/basic.icons.eot | Bin 0 -> 40166 bytes public/fonts/basic.icons.svg | 450 ++ public/fonts/basic.icons.ttf | Bin 0 -> 39924 bytes public/fonts/basic.icons.woff | Bin 0 -> 24676 bytes public/fonts/icons.eot | Bin 0 -> 37405 bytes public/fonts/icons.otf | Bin 0 -> 61896 bytes public/fonts/icons.svg | 399 ++ public/fonts/icons.ttf | Bin 0 -> 79076 bytes public/fonts/icons.woff | Bin 0 -> 43572 bytes public/images/loader-large-inverted.gif | Bin 0 -> 10168 bytes public/images/loader-large.gif | Bin 0 -> 8492 bytes public/images/loader-medium-inverted.gif | Bin 0 -> 5384 bytes public/images/loader-medium.gif | Bin 0 -> 4472 bytes public/images/loader-mini-inverted.gif | Bin 0 -> 2722 bytes public/images/loader-mini.gif | Bin 0 -> 2548 bytes public/images/loader-small-inverted.gif | Bin 0 -> 4241 bytes public/images/loader-small.gif | Bin 0 -> 3447 bytes public/images/noise-1.png | Bin 0 -> 3116 bytes public/index.php | 11 + public/javascript/scripts.js | 190 + public/javascript/semantic.min.js | 16 + public/pool/.gitignore | 2 + tests/MktTest.php | 12 - vendor/autoload.php | 4 +- vendor/bin/dbunit | 1 - vendor/bin/phpcov | 1 - vendor/bin/phpcpd | 1 - vendor/bin/phpdcd | 1 - vendor/bin/phploc | 1 - vendor/bin/phpunit | 1 - vendor/bin/phpunit-skelgen | 1 - vendor/composer/ClassLoader.php | 227 +- vendor/composer/autoload_classmap.php | 15 +- vendor/composer/autoload_namespaces.php | 31 +- vendor/composer/autoload_real.php | 28 +- vendor/composer/installed.json | 1529 ++++++- vendor/eher/phpunit/.gitignore | 5 - vendor/eher/phpunit/README.md | 30 - vendor/eher/phpunit/bin/dbunit | 19 - vendor/eher/phpunit/bin/init.php | 57 - vendor/eher/phpunit/bin/phpcov | 5 - vendor/eher/phpunit/bin/phpcpd | 7 - vendor/eher/phpunit/bin/phpdcd | 7 - vendor/eher/phpunit/bin/phploc | 7 - vendor/eher/phpunit/bin/phpunit | 5 - vendor/eher/phpunit/bin/phpunit-skelgen | 5 - vendor/eher/phpunit/build.sh | 103 - vendor/eher/phpunit/composer.json | 10 - vendor/eher/phpunit/src/dbunit/.gitattributes | 1 - vendor/eher/phpunit/src/dbunit/.gitignore | 7 - .../phpunit/src/dbunit/ChangeLog.markdown | 20 - vendor/eher/phpunit/src/dbunit/LICENSE | 33 - .../Extensions/Database/AbstractTester.php | 193 - .../PHPUnit/Extensions/Database/Autoload.php | 165 - .../Extensions/Database/Autoload.php.in | 76 - .../Database/Constraint/DataSetIsEqual.php | 123 - .../Database/Constraint/TableIsEqual.php | 123 - .../Database/Constraint/TableRowCount.php | 102 - .../Extensions/Database/DB/DataSet.php | 173 - .../Database/DB/DefaultDatabaseConnection.php | 230 - .../Database/DB/FilteredDataSet.php | 84 - .../Database/DB/IDatabaseConnection.php | 150 - .../Extensions/Database/DB/IMetaData.php | 118 - .../Extensions/Database/DB/MetaData.php | 247 -- .../DB/MetaData/InformationSchema.php | 174 - .../Extensions/Database/DB/MetaData/MySQL.php | 123 - .../Extensions/Database/DB/MetaData/Oci.php | 180 - .../Extensions/Database/DB/MetaData/PgSQL.php | 193 - .../Database/DB/MetaData/SqlSrv.php | 172 - .../Database/DB/MetaData/Sqlite.php | 143 - .../Extensions/Database/DB/ResultSetTable.php | 81 - .../PHPUnit/Extensions/Database/DB/Table.php | 73 - .../Extensions/Database/DB/TableIterator.php | 165 - .../Extensions/Database/DB/TableMetaData.php | 65 - .../Database/DataSet/AbstractDataSet.php | 171 - .../Database/DataSet/AbstractTable.php | 223 - .../DataSet/AbstractTableMetaData.php | 122 - .../Database/DataSet/AbstractXmlDataSet.php | 151 - .../Database/DataSet/CompositeDataSet.php | 120 - .../Database/DataSet/CsvDataSet.php | 160 - .../Database/DataSet/DataSetFilter.php | 196 - .../Database/DataSet/DefaultDataSet.php | 97 - .../Database/DataSet/DefaultTable.php | 117 - .../Database/DataSet/DefaultTableIterator.php | 161 - .../Database/DataSet/DefaultTableMetaData.php | 80 - .../Database/DataSet/FlatXmlDataSet.php | 99 - .../Extensions/Database/DataSet/IDataSet.php | 95 - .../Database/DataSet/IPersistable.php | 66 - .../Extensions/Database/DataSet/ISpec.php | 65 - .../Extensions/Database/DataSet/ITable.php | 95 - .../Database/DataSet/ITableIterator.php | 72 - .../Database/DataSet/ITableMetaData.php | 86 - .../Database/DataSet/MysqlXmlDataSet.php | 148 - .../Database/DataSet/Persistors/Abstract.php | 127 - .../Database/DataSet/Persistors/Factory.php | 87 - .../Database/DataSet/Persistors/FlatXml.php | 147 - .../Database/DataSet/Persistors/MysqlXml.php | 165 - .../Database/DataSet/Persistors/Xml.php | 151 - .../Database/DataSet/Persistors/Yaml.php | 109 - .../Database/DataSet/QueryDataSet.php | 128 - .../Database/DataSet/QueryTable.php | 177 - .../Database/DataSet/ReplacementDataSet.php | 129 - .../Database/DataSet/ReplacementTable.php | 245 - .../DataSet/ReplacementTableIterator.php | 185 - .../Extensions/Database/DataSet/Specs/Csv.php | 125 - .../Database/DataSet/Specs/DbQuery.php | 111 - .../Database/DataSet/Specs/DbTable.php | 109 - .../Database/DataSet/Specs/Factory.php | 89 - .../Database/DataSet/Specs/FlatXml.php | 75 - .../Database/DataSet/Specs/IFactory.php | 65 - .../Extensions/Database/DataSet/Specs/Xml.php | 75 - .../Database/DataSet/Specs/Yaml.php | 75 - .../Database/DataSet/TableFilter.php | 136 - .../Database/DataSet/TableMetaDataFilter.php | 165 - .../Database/DataSet/XmlDataSet.php | 132 - .../Database/DataSet/YamlDataSet.php | 170 - .../Extensions/Database/DefaultTester.php | 86 - .../PHPUnit/Extensions/Database/Exception.php | 60 - .../Database/IDatabaseListConsumer.php | 64 - .../PHPUnit/Extensions/Database/ITester.php | 119 - .../Database/Operation/Composite.php | 94 - .../Extensions/Database/Operation/Delete.php | 86 - .../Database/Operation/DeleteAll.php | 75 - .../Database/Operation/Exception.php | 129 - .../Extensions/Database/Operation/Factory.php | 138 - .../Database/Operation/IDatabaseOperation.php | 69 - .../Extensions/Database/Operation/Insert.php | 104 - .../Extensions/Database/Operation/Null.php | 63 - .../Extensions/Database/Operation/Replace.php | 142 - .../Database/Operation/RowBased.php | 143 - .../Database/Operation/Truncate.php | 84 - .../Extensions/Database/Operation/Update.php | 98 - .../PHPUnit/Extensions/Database/TestCase.php | 277 -- .../Extensions/Database/UI/Command.php | 89 - .../Extensions/Database/UI/Context.php | 100 - .../Extensions/Database/UI/IMedium.php | 72 - .../Extensions/Database/UI/IMediumPrinter.php | 72 - .../PHPUnit/Extensions/Database/UI/IMode.php | 66 - .../Extensions/Database/UI/IModeFactory.php | 73 - .../Database/UI/InvalidModeException.php | 96 - .../Extensions/Database/UI/Mediums/Text.php | 138 - .../Extensions/Database/UI/ModeFactory.php | 130 - .../Database/UI/Modes/ExportDataSet.php | 119 - .../UI/Modes/ExportDataSet/Arguments.php | 153 - .../Samples/BankAccountDB/BankAccount.php | 206 - .../BankAccountCompositeTest.php | 165 - .../BankAccountDB/BankAccountDBTest.php | 143 - .../BankAccountDB/BankAccountDBTestMySQL.php | 143 - .../_files/bank-account-after-deposits.xml | 6 - .../_files/bank-account-after-new-account.xml | 7 - .../_files/bank-account-after-withdrawals.xml | 6 - .../_files/bank-account-seed.xml | 6 - .../Tests/Constraint/TableRowCountTest.php | 70 - .../DB/DefaultDatabaseConnectionTest.php | 27 - .../Tests/DataSet/AbstractTableTest.php | 90 - .../Tests/DataSet/CompositeDataSetTest.php | 162 - .../dbunit/Tests/DataSet/CsvDataSetTest.php | 122 - .../src/dbunit/Tests/DataSet/FilterTest.php | 127 - .../dbunit/Tests/DataSet/PersistorTest.php | 104 - .../dbunit/Tests/DataSet/QueryDataSetTest.php | 133 - .../dbunit/Tests/DataSet/QueryTableTest.php | 132 - .../Tests/DataSet/ReplacementDataSetTest.php | 318 -- .../Tests/DataSet/ReplacementTableTest.php | 254 -- .../dbunit/Tests/DataSet/XmlDataSetsTest.php | 139 - .../dbunit/Tests/DataSet/YamlDataSetTest.php | 127 - .../Tests/Operation/OperationsMySQLTest.php | 107 - .../dbunit/Tests/Operation/OperationsTest.php | 176 - .../dbunit/Tests/Operation/RowBasedTest.php | 174 - .../Tests/_files/CsvDataSets/table1.csv | 4 - .../Tests/_files/CsvDataSets/table2.csv | 5 - .../Tests/_files/DatabaseTestUtility.php | 172 - .../XmlDataSets/AllEmptyTableInsertResult.xml | 9 - .../XmlDataSets/AllEmptyTableInsertTest.xml | 4 - .../XmlDataSets/DeleteAllOperationTest.xml | 6 - .../XmlDataSets/DeleteOperationResult.xml | 7 - .../XmlDataSets/DeleteOperationTest.xml | 5 - .../XmlDataSets/EmptyTableInsertResult.xml | 11 - .../XmlDataSets/EmptyTableInsertTest.xml | 6 - .../XmlDataSets/FilteredTestComparison.xml | 9 - .../XmlDataSets/FilteredTestFixture.xml | 8 - .../_files/XmlDataSets/FlatXmlDataSet.xml | 9 - .../_files/XmlDataSets/FlatXmlWriter.xml | 32 - .../XmlDataSets/FlatXmlWriterEntities.xml | 7 - .../XmlDataSets/InsertOperationResult.xml | 12 - .../XmlDataSets/InsertOperationTest.xml | 6 - .../_files/XmlDataSets/MysqlXmlDataSet.xml | 51 - .../OperationsMySQLTestFixture.xml | 9 - .../XmlDataSets/OperationsTestFixture.xml | 9 - .../_files/XmlDataSets/QueryDataSetTest.xml | 31 - .../XmlDataSets/ReplaceOperationResult.xml | 12 - .../XmlDataSets/ReplaceOperationTest.xml | 9 - .../_files/XmlDataSets/RowBasedExecute.xml | 6 - .../XmlDataSets/UpdateOperationResult.xml | 9 - .../XmlDataSets/UpdateOperationTest.xml | 6 - .../Tests/_files/XmlDataSets/XmlDataSet.xml | 65 - .../Tests/_files/XmlDataSets/XmlWriter.xml | 28 - .../_files/XmlDataSets/XmlWriterEntities.xml | 11 - .../_files/YamlDataSets/testDataSet.yaml | 44 - vendor/eher/phpunit/src/dbunit/build.xml | 163 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../src/dbunit/build/PHPCS/ruleset.xml | 35 - .../eher/phpunit/src/dbunit/build/phpmd.xml | 27 - vendor/eher/phpunit/src/dbunit/dbunit.bat | 43 - vendor/eher/phpunit/src/dbunit/dbunit.php | 53 - vendor/eher/phpunit/src/dbunit/package.xml | 424 -- .../eher/phpunit/src/dbunit/phpunit.xml.dist | 30 - .../TheSeer/fDOMDocument/autoload.php | 82 - .../TheSeer/fDOMDocument/src/fDOMDocument.php | 402 -- .../fDOMDocument/src/fDOMDocumentFragment.php | 83 - .../TheSeer/fDOMDocument/src/fDOMElement.php | 291 -- .../fDOMDocument/src/fDOMException.php | 175 - .../TheSeer/fDOMDocument/src/fDOMFilter.php | 342 -- .../fDOMDocument/src/fDOMFilter/xhtml.php | 1201 ----- .../TheSeer/fDOMDocument/src/fDOMNode.php | 69 - .../TheSeer/fDOMDocument/src/fDOMXPath.php | 115 - .../FinderFacade/Configuration.php | 140 - .../FinderFacade/FinderFacade.php | 137 - .../FinderFacade/autoload.php | 73 - .../FinderFacade/autoload.php.in | 72 - .../src/php-code-coverage/.gitattributes | 1 - .../phpunit/src/php-code-coverage/.gitignore | 7 - .../src/php-code-coverage/ChangeLog.markdown | 34 - .../phpunit/src/php-code-coverage/LICENSE | 33 - .../php-code-coverage/PHP/CodeCoverage.php | 539 --- .../PHP/CodeCoverage/Autoload.php | 97 - .../PHP/CodeCoverage/Autoload.php.in | 79 - .../PHP/CodeCoverage/Driver.php | 71 - .../PHP/CodeCoverage/Driver/Xdebug.php | 98 - .../PHP/CodeCoverage/Exception.php | 60 - .../PHP/CodeCoverage/Filter.php | 343 -- .../PHP/CodeCoverage/Report/Clover.php | 353 -- .../PHP/CodeCoverage/Report/Factory.php | 281 -- .../PHP/CodeCoverage/Report/HTML.php | 213 - .../PHP/CodeCoverage/Report/HTML/Renderer.php | 239 - .../Report/HTML/Renderer/Dashboard.php | 236 - .../Report/HTML/Renderer/Directory.php | 141 - .../Report/HTML/Renderer/File.php | 645 --- .../HTML/Renderer/Template/close12_1.gif | Bin 85 -> 0 bytes .../HTML/Renderer/Template/container-min.js | 19 - .../HTML/Renderer/Template/container.css | 324 -- .../Renderer/Template/dashboard.html.dist | 115 - .../Renderer/Template/directory.html.dist | 71 - .../HTML/Renderer/Template/directory.png | Bin 581 -> 0 bytes .../Template/directory_item.html.dist | 25 - .../HTML/Renderer/Template/file.html.dist | 120 - .../Report/HTML/Renderer/Template/file.png | Bin 333 -> 0 bytes .../Renderer/Template/file_item.html.dist | 26 - .../Renderer/Template/file_no_yui.html.dist | 79 - .../Report/HTML/Renderer/Template/glass.png | Bin 167 -> 0 bytes .../HTML/Renderer/Template/highcharts.js | 170 - .../HTML/Renderer/Template/jquery.min.js | 4 - .../Renderer/Template/method_item.html.dist | 19 - .../Report/HTML/Renderer/Template/style.css | 500 --- .../HTML/Renderer/Template/yahoo-dom-event.js | 14 - .../Report/HTML/Renderer/Template/yui_item.js | 5 - .../PHP/CodeCoverage/Report/Node.php | 332 -- .../CodeCoverage/Report/Node/Directory.php | 513 --- .../PHP/CodeCoverage/Report/Node/File.php | 695 --- .../PHP/CodeCoverage/Report/Node/Iterator.php | 149 - .../PHP/CodeCoverage/Report/PHP.php | 75 - .../PHP/CodeCoverage/Report/Text.php | 286 -- .../PHP/CodeCoverage/Util.php | 463 -- .../src/php-code-coverage/README.markdown | 43 - .../Tests/PHP/CodeCoverage/FilterTest.php | 302 -- .../PHP/CodeCoverage/Report/CloverTest.php | 97 - .../PHP/CodeCoverage/Report/FactoryTest.php | 264 -- .../Tests/PHP/CodeCoverage/UtilTest.php | 383 -- .../Tests/PHP/CodeCoverageTest.php | 294 -- .../src/php-code-coverage/Tests/TestCase.php | 267 -- .../Tests/_files/BankAccount-clover.xml | 26 - .../Tests/_files/BankAccount.php | 33 - .../Tests/_files/BankAccountTest.php | 70 - .../_files/CoverageClassExtendedTest.php | 12 - .../Tests/_files/CoverageClassTest.php | 12 - .../Tests/_files/CoverageFunctionTest.php | 11 - .../Tests/_files/CoverageMethodTest.php | 12 - .../Tests/_files/CoverageNoneTest.php | 9 - .../Tests/_files/CoverageNotPrivateTest.php | 12 - .../Tests/_files/CoverageNotProtectedTest.php | 12 - .../Tests/_files/CoverageNotPublicTest.php | 12 - .../Tests/_files/CoveragePrivateTest.php | 12 - .../Tests/_files/CoverageProtectedTest.php | 12 - .../Tests/_files/CoveragePublicTest.php | 12 - .../Tests/_files/CoveredClass.php | 36 - .../Tests/_files/CoveredFunction.php | 4 - .../NamespaceCoverageClassExtendedTest.php | 12 - .../_files/NamespaceCoverageClassTest.php | 12 - .../_files/NamespaceCoverageMethodTest.php | 12 - .../NamespaceCoverageNotPrivateTest.php | 12 - .../NamespaceCoverageNotProtectedTest.php | 12 - .../_files/NamespaceCoverageNotPublicTest.php | 12 - .../_files/NamespaceCoveragePrivateTest.php | 12 - .../_files/NamespaceCoverageProtectedTest.php | 12 - .../_files/NamespaceCoveragePublicTest.php | 12 - .../Tests/_files/NamespaceCoveredClass.php | 38 - .../_files/NotExistingCoveredElementTest.php | 24 - .../Tests/_files/ignored-lines-clover.xml | 18 - .../Tests/_files/source_with_ignore.php | 26 - .../Tests/_files/source_with_namespace.php | 20 - .../Tests/_files/source_without_ignore.php | 4 - .../Tests/_files/source_without_namespace.php | 18 - .../phpunit/src/php-code-coverage/build.xml | 163 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../php-code-coverage/build/PHPCS/ruleset.xml | 35 - .../src/php-code-coverage/build/phpmd.xml | 27 - .../phpunit/src/php-code-coverage/package.xml | 172 - .../src/php-code-coverage/phpunit.xml.dist | 29 - .../php-code-coverage/scripts/auto_append.php | 5 - .../scripts/auto_prepend.php | 10 - .../src/php-file-iterator/.gitattributes | 1 - .../phpunit/src/php-file-iterator/.gitignore | 7 - .../src/php-file-iterator/ChangeLog.markdown | 16 - .../src/php-file-iterator/File/Iterator.php | 196 - .../File/Iterator/Autoload.php | 75 - .../File/Iterator/Autoload.php.in | 73 - .../File/Iterator/Facade.php | 161 - .../File/Iterator/Factory.php | 120 - .../phpunit/src/php-file-iterator/LICENSE | 33 - .../src/php-file-iterator/README.markdown | 23 - .../phpunit/src/php-file-iterator/build.xml | 162 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../php-file-iterator/build/PHPCS/ruleset.xml | 35 - .../src/php-file-iterator/build/phpmd.xml | 27 - .../phpunit/src/php-file-iterator/package.xml | 65 - .../src/php-text-template/.gitattributes | 1 - .../phpunit/src/php-text-template/.gitignore | 7 - .../src/php-text-template/ChangeLog.markdown | 9 - .../phpunit/src/php-text-template/LICENSE | 33 - .../src/php-text-template/README.markdown | 23 - .../src/php-text-template/Text/Template.php | 153 - .../Text/Template/Autoload.php | 75 - .../Text/Template/Autoload.php.in | 75 - .../phpunit/src/php-text-template/build.xml | 162 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../php-text-template/build/PHPCS/ruleset.xml | 35 - .../src/php-text-template/build/phpmd.xml | 27 - .../phpunit/src/php-text-template/package.xml | 59 - .../eher/phpunit/src/php-timer/.gitattributes | 1 - vendor/eher/phpunit/src/php-timer/.gitignore | 7 - .../phpunit/src/php-timer/ChangeLog.markdown | 14 - vendor/eher/phpunit/src/php-timer/LICENSE | 33 - .../eher/phpunit/src/php-timer/PHP/Timer.php | 159 - .../src/php-timer/PHP/Timer/Autoload.php | 75 - .../src/php-timer/PHP/Timer/Autoload.php.in | 75 - .../phpunit/src/php-timer/README.markdown | 23 - .../phpunit/src/php-timer/Tests/TimerTest.php | 108 - vendor/eher/phpunit/src/php-timer/build.xml | 161 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../src/php-timer/build/PHPCS/ruleset.xml | 35 - .../phpunit/src/php-timer/build/phpmd.xml | 27 - vendor/eher/phpunit/src/php-timer/package.xml | 59 - .../phpunit/src/php-timer/phpunit.xml.dist | 26 - .../src/php-token-stream/.gitattributes | 1 - .../phpunit/src/php-token-stream/.gitignore | 7 - .../src/php-token-stream/ChangeLog.markdown | 25 - .../eher/phpunit/src/php-token-stream/LICENSE | 33 - .../src/php-token-stream/PHP/Token.php | 717 --- .../src/php-token-stream/PHP/Token/Stream.php | 568 --- .../PHP/Token/Stream/Autoload.php | 232 - .../PHP/Token/Stream/Autoload.php.in | 75 - .../PHP/Token/Stream/CachingFactory.php | 85 - .../src/php-token-stream/README.markdown | 23 - .../Tests/Token/ClassTest.php | 122 - .../Tests/Token/FunctionTest.php | 160 - .../Tests/Token/IncludeTest.php | 117 - .../Tests/Token/InterfaceTest.php | 236 - .../Tests/Token/NamespaceTest.php | 124 - .../src/php-token-stream/Tests/TokenTest.php | 85 - .../_files/classExtendsNamespacedClass.php | 10 - .../Tests/_files/classInNamespace.php | 6 - .../Tests/_files/classInScopedNamespace.php | 9 - .../php-token-stream/Tests/_files/issue19.php | 3 - ...tipleNamespacesWithOneClassUsingBraces.php | 12 - ...espacesWithOneClassUsingNonBraceSyntax.php | 14 - .../php-token-stream/Tests/_files/source.php | 32 - .../php-token-stream/Tests/_files/source2.php | 6 - .../php-token-stream/Tests/_files/source3.php | 14 - .../php-token-stream/Tests/_files/source4.php | 30 - .../phpunit/src/php-token-stream/build.xml | 163 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../php-token-stream/build/PHPCS/ruleset.xml | 35 - .../src/php-token-stream/build/phpmd.xml | 27 - .../phpunit/src/php-token-stream/package.xml | 70 - .../src/php-token-stream/phpunit.xml.dist | 27 - vendor/eher/phpunit/src/php/ezc/Base/base.php | 658 --- .../src/php/ezc/Base/base_autoload.php | 47 - .../src/php/ezc/Base/exceptions/autoload.php | 38 - .../double_class_repository_prefix.php | 34 - .../src/php/ezc/Base/exceptions/exception.php | 43 - .../Base/exceptions/extension_not_found.php | 38 - .../ezc/Base/exceptions/file_exception.php | 25 - .../src/php/ezc/Base/exceptions/file_io.php | 50 - .../ezc/Base/exceptions/file_not_found.php | 43 - .../ezc/Base/exceptions/file_permission.php | 63 - .../functionality_not_supported.php | 31 - .../exceptions/init_callback_configured.php | 31 - .../exceptions/invalid_callback_class.php | 31 - .../Base/exceptions/invalid_parent_class.php | 29 - .../Base/exceptions/property_not_found.php | 30 - .../Base/exceptions/property_permission.php | 42 - .../ezc/Base/exceptions/setting_not_found.php | 29 - .../php/ezc/Base/exceptions/setting_value.php | 42 - .../src/php/ezc/Base/exceptions/value.php | 43 - .../src/php/ezc/Base/exceptions/whatever.php | 40 - .../src/php/ezc/Base/ezc_bootstrap.php | 40 - .../phpunit/src/php/ezc/Base/features.php | 365 -- vendor/eher/phpunit/src/php/ezc/Base/file.php | 495 --- vendor/eher/phpunit/src/php/ezc/Base/init.php | 125 - .../interfaces/configuration_initializer.php | 32 - .../php/ezc/Base/interfaces/exportable.php | 33 - .../php/ezc/Base/interfaces/persistable.php | 40 - .../phpunit/src/php/ezc/Base/metadata.php | 120 - .../src/php/ezc/Base/metadata/pear.php | 129 - .../src/php/ezc/Base/metadata/tarball.php | 153 - .../eher/phpunit/src/php/ezc/Base/options.php | 174 - .../src/php/ezc/Base/options/autoload.php | 75 - .../eher/phpunit/src/php/ezc/Base/struct.php | 42 - .../ezc/Base/structs/file_find_context.php | 72 - .../ezc/Base/structs/repository_directory.php | 83 - .../php/ezc/ConsoleTools/console_autoload.php | 76 - .../ezc/ConsoleTools/dialog/menu_dialog.php | 217 - .../ConsoleTools/dialog/question_dialog.php | 251 -- .../dialog/validators/menu_dialog_default.php | 199 - .../validators/question_dialog_collection.php | 186 - .../validators/question_dialog_mapping.php | 142 - .../validators/question_dialog_regex.php | 169 - .../validators/question_dialog_type.php | 227 - .../php/ezc/ConsoleTools/dialog_viewer.php | 68 - .../ezc/ConsoleTools/exceptions/argument.php | 23 - .../argument_already_registered.php | 54 - .../argument_mandatory_violation.php | 33 - .../exceptions/argument_too_many.php | 33 - .../exceptions/argument_type_violation.php | 40 - .../ConsoleTools/exceptions/dialog_abort.php | 30 - .../ezc/ConsoleTools/exceptions/exception.php | 20 - .../exceptions/invalid_option_name.php | 32 - .../exceptions/invalid_output_target.php | 32 - .../exceptions/no_position_stored.php | 30 - .../exceptions/no_valid_dialog_result.php | 32 - .../ezc/ConsoleTools/exceptions/option.php | 22 - .../exceptions/option_already_registered.php | 31 - .../exceptions/option_arguments_violation.php | 32 - .../option_dependency_violation.php | 39 - .../exceptions/option_exclusion_violation.php | 39 - .../exceptions/option_mandatory_violation.php | 32 - .../exceptions/option_missing_value.php | 32 - .../exceptions/option_no_alias.php | 31 - .../exceptions/option_not_exists.php | 31 - .../option_string_not_wellformed.php | 31 - .../exceptions/option_too_many_values.php | 32 - .../exceptions/option_type_violation.php | 42 - .../src/php/ezc/ConsoleTools/input.php | 1396 ------ .../php/ezc/ConsoleTools/input/argument.php | 180 - .../php/ezc/ConsoleTools/input/arguments.php | 246 -- .../input/help_generators/standard.php | 391 -- .../src/php/ezc/ConsoleTools/input/option.php | 585 --- .../input/validators/standard.php | 172 - .../ezc/ConsoleTools/interfaces/dialog.php | 82 - .../interfaces/dialog_validator.php | 57 - .../interfaces/input_help_generator.php | 170 - .../interfaces/input_validator.php | 41 - .../interfaces/menu_dialog_validator.php | 29 - .../interfaces/question_dialog_validator.php | 30 - .../php/ezc/ConsoleTools/options/dialog.php | 70 - .../ezc/ConsoleTools/options/menu_dialog.php | 116 - .../php/ezc/ConsoleTools/options/output.php | 111 - .../ezc/ConsoleTools/options/progressbar.php | 127 - .../ConsoleTools/options/progressmonitor.php | 57 - .../ConsoleTools/options/question_dialog.php | 96 - .../ezc/ConsoleTools/options/statusbar.php | 61 - .../php/ezc/ConsoleTools/options/table.php | 199 - .../src/php/ezc/ConsoleTools/output.php | 580 --- .../src/php/ezc/ConsoleTools/progressbar.php | 462 -- .../php/ezc/ConsoleTools/progressmonitor.php | 215 - .../src/php/ezc/ConsoleTools/statusbar.php | 261 -- .../ezc/ConsoleTools/structs/option_rule.php | 167 - .../ConsoleTools/structs/output_format.php | 186 - .../ConsoleTools/structs/output_formats.php | 181 - .../src/php/ezc/ConsoleTools/table.php | 875 ---- .../src/php/ezc/ConsoleTools/table/cell.php | 152 - .../src/php/ezc/ConsoleTools/table/row.php | 372 -- .../src/php/ezc/ConsoleTools/tools/string.php | 184 - .../src/php/ezc/autoload/base_autoload.php | 47 - .../src/php/ezc/autoload/console_autoload.php | 76 - vendor/eher/phpunit/src/phpcov/.gitattributes | 1 - vendor/eher/phpunit/src/phpcov/.gitignore | 2 - .../PHP/CodeCoverage/TextUI/Command.php | 314 -- .../eher/phpunit/src/phpcov/README.markdown | 53 - vendor/eher/phpunit/src/phpcov/package.xml | 91 - vendor/eher/phpunit/src/phpcov/phpcov.bat | 38 - vendor/eher/phpunit/src/phpcov/phpcov.php | 55 - vendor/eher/phpunit/src/phpcpd/.gitattributes | 1 - vendor/eher/phpunit/src/phpcpd/.gitignore | 12 - .../phpunit/src/phpcpd/ChangeLog.markdown | 14 - vendor/eher/phpunit/src/phpcpd/LICENSE | 33 - .../eher/phpunit/src/phpcpd/README.markdown | 39 - vendor/eher/phpunit/src/phpcpd/build.xml | 204 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../src/phpcpd/build/PHPCS/ruleset.xml | 35 - .../eher/phpunit/src/phpcpd/build/package.xml | 138 - .../eher/phpunit/src/phpcpd/build/phpdox.xml | 14 - .../eher/phpunit/src/phpcpd/build/phpmd.xml | 27 - vendor/eher/phpunit/src/phpcpd/phpcpd.bat | 38 - vendor/eher/phpunit/src/phpcpd/phpcpd.php | 56 - .../eher/phpunit/src/phpcpd/src/CodeClone.php | 154 - .../phpunit/src/phpcpd/src/CodeCloneMap.php | 218 - .../src/phpcpd/src/Detector/Detector.php | 119 - .../phpcpd/src/Detector/Strategy/Abstract.php | 88 - .../phpcpd/src/Detector/Strategy/Default.php | 186 - .../Detector/Strategy/MemoryConserving.php | 77 - .../src/phpcpd/src/Log/AbstractXmlLogger.php | 150 - .../eher/phpunit/src/phpcpd/src/Log/PMD.php | 108 - .../phpunit/src/phpcpd/src/TextUI/Command.php | 300 -- .../src/phpcpd/src/TextUI/ResultPrinter.php | 122 - .../eher/phpunit/src/phpcpd/src/autoload.php | 72 - .../phpunit/src/phpcpd/src/autoload.php.in | 63 - .../phpunit/src/phpcpd/tests/DetectorTest.php | 125 - .../phpunit/src/phpcpd/tests/_files/Math.php | 210 - vendor/eher/phpunit/src/phpdcd/.gitattributes | 1 - vendor/eher/phpunit/src/phpdcd/.gitignore | 7 - .../phpunit/src/phpdcd/PHPDCD/Autoload.php | 72 - .../phpunit/src/phpdcd/PHPDCD/Autoload.php.in | 70 - .../phpunit/src/phpdcd/PHPDCD/Detector.php | 336 -- .../src/phpdcd/PHPDCD/TextUI/Command.php | 278 -- .../phpdcd/PHPDCD/TextUI/ResultPrinter.php | 75 - .../eher/phpunit/src/phpdcd/README.markdown | 32 - .../phpunit/src/phpdcd/Tests/DetectorTest.php | 409 -- .../src/phpdcd/Tests/_files/declarations.php | 24 - .../src/phpdcd/Tests/_files/function_call.php | 2 - .../phpdcd/Tests/_files/function_call2.php | 2 - .../src/phpdcd/Tests/_files/issue_5.php | 13 - .../src/phpdcd/Tests/_files/method_call.php | 3 - .../Tests/_files/static_method_call.php | 2 - vendor/eher/phpunit/src/phpdcd/build.xml | 162 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../src/phpdcd/build/PHPCS/ruleset.xml | 35 - .../eher/phpunit/src/phpdcd/build/phpmd.xml | 27 - vendor/eher/phpunit/src/phpdcd/package.xml | 108 - vendor/eher/phpunit/src/phpdcd/phpdcd.bat | 38 - vendor/eher/phpunit/src/phpdcd/phpdcd.php | 52 - .../eher/phpunit/src/phpdcd/phpunit.xml.dist | 17 - vendor/eher/phpunit/src/phploc/.gitattributes | 1 - vendor/eher/phpunit/src/phploc/.gitignore | 7 - .../phpunit/src/phploc/PHPLOC/Analyser.php | 666 --- .../phpunit/src/phploc/PHPLOC/Autoload.php | 75 - .../phpunit/src/phploc/PHPLOC/Autoload.php.in | 71 - .../src/phploc/PHPLOC/TextUI/Command.php | 312 -- .../PHPLOC/TextUI/ResultPrinter/CSV.php | 138 - .../PHPLOC/TextUI/ResultPrinter/Text.php | 145 - .../PHPLOC/TextUI/ResultPrinter/XML.php | 91 - .../eher/phpunit/src/phploc/README.markdown | 56 - .../phpunit/src/phploc/Tests/AnalyzerTest.php | 192 - .../src/phploc/Tests/_files/source.php | 47 - .../phpunit/src/phploc/Tests/_files/tests.php | 11 - ...stsThatIndirectlyExtendPHPUnitTestCase.php | 11 - vendor/eher/phpunit/src/phploc/build.xml | 162 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../src/phploc/build/PHPCS/ruleset.xml | 35 - .../eher/phpunit/src/phploc/build/phpmd.xml | 27 - vendor/eher/phpunit/src/phploc/package.xml | 114 - vendor/eher/phpunit/src/phploc/phploc.bat | 38 - vendor/eher/phpunit/src/phploc/phploc.php | 52 - .../eher/phpunit/src/phploc/phpunit.xml.dist | 16 - .../src/phpunit-mock-objects/.gitattributes | 1 - .../src/phpunit-mock-objects/.gitignore | 7 - .../phpunit-mock-objects/ChangeLog.markdown | 12 - .../phpunit/src/phpunit-mock-objects/LICENSE | 33 - .../PHPUnit/Framework/MockObject/Autoload.php | 111 - .../Framework/MockObject/Autoload.php.in | 76 - .../Framework/MockObject/Builder/Identity.php | 70 - .../MockObject/Builder/InvocationMocker.php | 193 - .../Framework/MockObject/Builder/Match.php | 66 - .../MockObject/Builder/MethodNameMatch.php | 68 - .../MockObject/Builder/Namespace.php | 79 - .../MockObject/Builder/ParametersMatch.php | 89 - .../Framework/MockObject/Builder/Stub.php | 66 - .../Framework/MockObject/Generator.php | 816 ---- .../Generator/mocked_class.tpl.dist | 52 - .../Generator/mocked_clone.tpl.dist | 4 - .../Generator/mocked_object_method.tpl.dist | 22 - .../Generator/mocked_static_method.tpl.dist | 22 - .../MockObject/Generator/trait_class.tpl.dist | 4 - .../Generator/unmocked_clone.tpl.dist | 5 - .../MockObject/Generator/wsdl_class.tpl.dist | 9 - .../MockObject/Generator/wsdl_method.tpl.dist | 4 - .../Framework/MockObject/Invocation.php | 58 - .../MockObject/Invocation/Object.php | 74 - .../MockObject/Invocation/Static.php | 187 - .../Framework/MockObject/InvocationMocker.php | 201 - .../Framework/MockObject/Invokable.php | 79 - .../PHPUnit/Framework/MockObject/Matcher.php | 308 -- .../MockObject/Matcher/AnyInvokedCount.php | 72 - .../MockObject/Matcher/AnyParameters.php | 74 - .../MockObject/Matcher/Invocation.php | 88 - .../MockObject/Matcher/InvokedAtIndex.php | 127 - .../MockObject/Matcher/InvokedAtLeastOnce.php | 85 - .../MockObject/Matcher/InvokedCount.php | 143 - .../MockObject/Matcher/InvokedRecorder.php | 107 - .../MockObject/Matcher/MethodName.php | 102 - .../MockObject/Matcher/Parameters.php | 160 - .../Matcher/StatelessInvocation.php | 96 - .../Framework/MockObject/MockBuilder.php | 239 - .../Framework/MockObject/MockObject.php | 94 - .../PHPUnit/Framework/MockObject/Stub.php | 71 - .../MockObject/Stub/ConsecutiveCalls.php | 87 - .../Framework/MockObject/Stub/Exception.php | 80 - .../MockObject/Stub/MatcherCollection.php | 66 - .../Framework/MockObject/Stub/Return.php | 78 - .../MockObject/Stub/ReturnArgument.php | 78 - .../MockObject/Stub/ReturnCallback.php | 94 - .../Framework/MockObject/Stub/ReturnSelf.php | 76 - .../MockObject/Stub/ReturnValueMap.php | 87 - .../Framework/MockObject/Verifiable.php | 65 - .../Tests/GeneratorTest.php | 91 - .../Tests/MockBuilderTest.php | 152 - .../MockObject/Invocation/ObjectTest.php | 82 - .../MockObject/Invocation/StaticTest.php | 52 - .../Tests/MockObject/class.phpt | 128 - .../MockObject/class_call_parent_clone.phpt | 82 - .../class_call_parent_constructor.phpt | 81 - .../class_dont_call_parent_clone.phpt | 81 - .../class_dont_call_parent_constructor.phpt | 81 - ...ing_interface_call_parent_constructor.phpt | 86 - ...nterface_dont_call_parent_constructor.phpt | 86 - .../Tests/MockObject/class_partial.phpt | 107 - .../Tests/MockObject/interface.phpt | 101 - .../invocation_object_clone_object.phpt | 130 - .../invocation_static_clone_object.phpt | 130 - .../Tests/MockObject/namespaced_class.phpt | 131 - .../namespaced_class_call_parent_clone.phpt | 84 - ...espaced_class_call_parent_constructor.phpt | 83 - ...mespaced_class_dont_call_parent_clone.phpt | 83 - ...ed_class_dont_call_parent_constructor.phpt | 83 - ...ing_interface_call_parent_constructor.phpt | 88 - ...nterface_dont_call_parent_constructor.phpt | 88 - .../MockObject/namespaced_class_partial.phpt | 109 - .../MockObject/namespaced_interface.phpt | 103 - .../Tests/MockObject/nonexistent_class.phpt | 78 - .../nonexistent_class_with_namespace.phpt | 86 - ...ith_namespace_starting_with_separator.phpt | 86 - .../Tests/MockObject/wsdl_class.phpt | 36 - .../MockObject/wsdl_class_namespace.phpt | 38 - .../Tests/MockObject/wsdl_class_partial.phpt | 29 - .../Tests/MockObjectTest.php | 544 --- .../Tests/_files/AbstractMockTestClass.php | 5 - .../Tests/_files/AnInterface.php | 5 - .../Tests/_files/FunctionCallback.php | 9 - .../Tests/_files/GoogleSearch.wsdl | 198 - .../Tests/_files/MethodCallback.php | 21 - .../Tests/_files/Mockable.php | 28 - .../Tests/_files/PartialMockTestClass.php | 18 - .../Tests/_files/SomeClass.php | 13 - .../Tests/_files/StaticMockTestClass.php | 12 - .../src/phpunit-mock-objects/build.xml | 163 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../build/PHPCS/ruleset.xml | 35 - .../src/phpunit-mock-objects/build/phpmd.xml | 27 - .../src/phpunit-mock-objects/package.xml | 199 - .../src/phpunit-mock-objects/phpunit.xml.dist | 28 - .../phpunit/src/phpunit-selenium/.gitignore | 6 - .../phpunit/src/phpunit-selenium/.gitmodules | 30 - .../phpunit/src/phpunit-selenium/.travis.yml | 6 - .../src/phpunit-selenium/ChangeLog.markdown | 79 - .../eher/phpunit/src/phpunit-selenium/LICENSE | 33 - .../PHPUnit/Extensions/Selenium2TestCase.php | 246 -- .../Extensions/Selenium2TestCase/Command.php | 91 - .../Selenium2TestCase/CommandsHolder.php | 151 - .../Extensions/Selenium2TestCase/Driver.php | 150 - .../Extensions/Selenium2TestCase/Element.php | 142 - .../Selenium2TestCase/Element/Select.php | 127 - .../ElementCommand/Attribute.php | 73 - .../ElementCommand/Click.php | 63 - .../Selenium2TestCase/ElementCommand/Css.php | 73 - .../ElementCommand/Equals.php | 76 - .../ElementCommand/GenericAccessor.php | 64 - .../ElementCommand/GenericPost.php | 63 - .../ElementCommand/Value.php | 93 - .../Selenium2TestCase/ElementCriteria.php | 72 - .../Selenium2TestCase/Exception.php | 58 - .../Extensions/Selenium2TestCase/Response.php | 88 - .../Extensions/Selenium2TestCase/Session.php | 306 -- .../Selenium2TestCase/Session/Cookie.php | 124 - .../Session/Cookie/Builder.php | 129 - .../Selenium2TestCase/Session/Storage.php | 83 - .../Selenium2TestCase/Session/Timeouts.php | 75 - .../SessionCommand/AcceptAlert.php | 63 - .../SessionCommand/AlertText.php | 78 - .../SessionCommand/DismissAlert.php | 63 - .../SessionCommand/Frame.php | 69 - .../SessionCommand/GenericAccessor.php | 63 - .../Selenium2TestCase/SessionCommand/Url.php | 77 - .../SessionCommand/Window.php | 69 - .../Selenium2TestCase/SessionStrategy.php | 69 - .../SessionStrategy/Isolated.php | 75 - .../SessionStrategy/Shared.php | 90 - .../Selenium2TestCase/StateCommand.php | 66 - .../Extensions/Selenium2TestCase/URL.php | 158 - .../Extensions/Selenium2TestCase/Window.php | 71 - .../Extensions/SeleniumBrowserSuite.php | 92 - .../PHPUnit/Extensions/SeleniumTestCase.php | 1052 ----- .../Extensions/SeleniumTestCase/Autoload.php | 115 - .../SeleniumTestCase/Autoload.php.in | 78 - .../Extensions/SeleniumTestCase/Driver.php | 1297 ------ .../Extensions/SeleniumTestCase/append.php | 69 - .../SeleniumTestCase/phpunit_coverage.php | 87 - .../Extensions/SeleniumTestCase/prepend.php | 61 - .../PHPUnit/Extensions/SeleniumTestSuite.php | 148 - .../phpunit/src/phpunit-selenium/README.txt | 14 - .../Tests/Selenium2TestCase/BaseTestCase.php | 17 - .../Tests/Selenium2TestCase/FailuresTest.php | 109 - .../Selenium2TestCase/PageObjectTest.php | 56 - .../Tests/Selenium2TestCase/URLTest.php | 106 - .../Tests/Selenium2TestCaseTest.php | 882 ---- .../Tests/SeleniumTestCase/FailuresTest.php | 207 - .../SeleniumTestCase/MultipleBrowsersTest.php | 94 - .../SeleniumTestCase/RegressionsTest.php | 99 - .../Tests/SeleniumTestCase/SkippedTest.php | 85 - .../SeleniumTestCase/SuiteBuildingTest.php | 101 - .../Tests/SeleniumTestCase/Ticket114Test.php | 31 - .../Tests/SeleniumTestCaseTest.php | 737 ---- .../src/phpunit-selenium/before_script.sh | 13 - .../phpunit/src/phpunit-selenium/build.xml | 158 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../phpunit-selenium/build/PHPCS/ruleset.xml | 35 - .../src/phpunit-selenium/build/phpmd.xml | 27 - .../phpunit/src/phpunit-selenium/package.xml | 211 - .../phpunit-selenium-bootstrap.php | 5 - .../src/phpunit-selenium/phpunit.xml.dist | 37 - .../src/phpunit-selenium/run-phpunit.php | 54 - .../selenium-1-tests/html/CamelCasePage.html | 7 - .../html/test_check_uncheck.html | 46 - .../html/test_click_javascript_page.html | 33 - .../html/test_click_page1.html | 30 - .../html/test_click_page2.html | 29 - .../selenium-1-tests/html/test_confirm.html | 34 - .../html/test_delayed_element.html | 24 - .../html/test_dummy_page.html | 25 - .../selenium-1-tests/html/test_editable.html | 37 - .../html/test_element_selection.html | 15 - .../html/test_focus_on_blur.html | 34 - .../html/test_form_elements.html | 8 - .../html/test_form_events.html | 128 - .../selenium-1-tests/html/test_frames.html | 7 - .../selenium-1-tests/html/test_geometry.html | 6 - .../selenium-1-tests/html/test_locators.html | 94 - .../html/test_multiselect.html | 38 - .../selenium-1-tests/html/test_open.html | 23 - .../selenium-1-tests/html/test_page.slow.html | 39 - .../selenium-1-tests/html/test_prompt.html | 34 - .../html/test_reload_onchange_page.html | 33 - .../selenium-1-tests/html/test_select.html | 43 - .../html/test_select_window.html | 31 - .../html/test_select_window_popup.html | 25 - .../html/test_slowloading_page.html | 25 - .../html/test_store_value.html | 22 - .../selenium-1-tests/html/test_submit.html | 32 - .../html/test_type_page1.html | 36 - .../html/test_type_page2.html | 60 - .../html/test_verifications.html | 29 - .../html/test_verify_alert.html | 45 - .../html/test_visibility.html | 64 - .../selenium-1-tests/html/test_wait.html | 33 - .../src/phpunit-skeleton-generator/.gitignore | 12 - .../ChangeLog.markdown | 9 - .../src/phpunit-skeleton-generator/LICENSE | 33 - .../PHPUnit/SkeletonGenerator.php | 188 - .../PHPUnit/SkeletonGenerator/Autoload.php | 73 - .../PHPUnit/SkeletonGenerator/Autoload.php.in | 70 - .../PHPUnit/SkeletonGenerator/Class.php | 551 --- .../SkeletonGenerator/Template/Class.tpl.dist | 6 - .../Template/IncompleteTestMethod.tpl.dist | 12 - .../Template/Method.tpl.dist | 9 - .../Template/TestClass.tpl.dist | 28 - .../Template/TestMethod.tpl.dist | 13 - .../Template/TestMethodBool.tpl.dist | 12 - .../Template/TestMethodBoolStatic.tpl.dist | 12 - .../Template/TestMethodException.tpl.dist | 11 - .../TestMethodExceptionStatic.tpl.dist | 11 - .../Template/TestMethodStatic.tpl.dist | 13 - .../PHPUnit/SkeletonGenerator/Test.php | 372 -- .../SkeletonGenerator/TextUI/Command.php | 223 - .../README.markdown | 18 - .../Tests/_fixture/BankAccount.php | 33 - .../Tests/_fixture/BankAccountNS.php | 35 - .../Tests/_fixture/BankAccountTest.php | 61 - .../Tests/class-from-test.phpt | 51 - .../Tests/test-from-class.phpt | 82 - .../Tests/test-from-namespaced-class.phpt | 82 - .../src/phpunit-skeleton-generator/build.xml | 164 - .../ControlSignatureSniff.php | 22 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../build/PHPCS/ruleset.xml | 35 - .../build/phpmd.xml | 27 - .../phpunit-skeleton-generator/package.xml | 145 - .../phpunit-skelgen.bat | 43 - .../phpunit-skelgen.php | 44 - .../phpunit.xml.dist | 26 - .../eher/phpunit/src/phpunit/.gitattributes | 1 - vendor/eher/phpunit/src/phpunit/.gitignore | 12 - .../phpunit/src/phpunit/ChangeLog.markdown | 121 - vendor/eher/phpunit/src/phpunit/LICENSE | 33 - .../phpunit/src/phpunit/PHPUnit/Autoload.php | 223 - .../src/phpunit/PHPUnit/Autoload.php.in | 104 - .../PHPUnit/Extensions/GroupTestSuite.php | 100 - .../PHPUnit/Extensions/OutputTestCase.php | 76 - .../PHPUnit/Extensions/PhptTestCase.php | 270 -- .../Extensions/PhptTestCase/Logger.php | 63 - .../PHPUnit/Extensions/PhptTestSuite.php | 83 - .../PHPUnit/Extensions/RepeatedTest.php | 156 - .../PHPUnit/Extensions/TestDecorator.php | 151 - .../PHPUnit/Extensions/TicketListener.php | 225 - .../src/phpunit/PHPUnit/Framework/Assert.php | 2619 ----------- .../PHPUnit/Framework/Assert/Functions.php | 1884 -------- .../PHPUnit/Framework/Assert/Functions.php.in | 44 - .../Framework/AssertionFailedError.php | 69 - .../phpunit/PHPUnit/Framework/Comparator.php | 98 - .../PHPUnit/Framework/Comparator/Array.php | 178 - .../Framework/Comparator/DOMDocument.php | 115 - .../PHPUnit/Framework/Comparator/Double.php | 102 - .../Framework/Comparator/Exception.php | 93 - .../Framework/Comparator/MockObject.php | 87 - .../PHPUnit/Framework/Comparator/Numeric.php | 117 - .../PHPUnit/Framework/Comparator/Object.php | 146 - .../PHPUnit/Framework/Comparator/Resource.php | 98 - .../PHPUnit/Framework/Comparator/Scalar.php | 137 - .../Framework/Comparator/SplObjectStorage.php | 115 - .../PHPUnit/Framework/Comparator/Type.php | 106 - .../PHPUnit/Framework/ComparatorFactory.php | 156 - .../PHPUnit/Framework/ComparisonFailure.php | 167 - .../phpunit/PHPUnit/Framework/Constraint.php | 181 - .../PHPUnit/Framework/Constraint/And.php | 164 - .../Framework/Constraint/ArrayHasKey.php | 115 - .../Framework/Constraint/Attribute.php | 130 - .../Constraint/ClassHasAttribute.php | 125 - .../Constraint/ClassHasStaticAttribute.php | 99 - .../Framework/Constraint/Composite.php | 115 - .../PHPUnit/Framework/Constraint/Count.php | 129 - .../Framework/Constraint/Exception.php | 125 - .../Framework/Constraint/ExceptionCode.php | 110 - .../Framework/Constraint/ExceptionMessage.php | 110 - .../Framework/Constraint/FileExists.php | 103 - .../Framework/Constraint/GreaterThan.php | 97 - .../Framework/Constraint/IsAnything.php | 103 - .../PHPUnit/Framework/Constraint/IsEmpty.php | 105 - .../PHPUnit/Framework/Constraint/IsEqual.php | 216 - .../PHPUnit/Framework/Constraint/IsFalse.php | 83 - .../Framework/Constraint/IsIdentical.php | 173 - .../Framework/Constraint/IsInstanceOf.php | 122 - .../PHPUnit/Framework/Constraint/IsNull.php | 83 - .../PHPUnit/Framework/Constraint/IsTrue.php | 83 - .../PHPUnit/Framework/Constraint/IsType.php | 191 - .../PHPUnit/Framework/Constraint/LessThan.php | 97 - .../PHPUnit/Framework/Constraint/Not.php | 204 - .../Constraint/ObjectHasAttribute.php | 78 - .../PHPUnit/Framework/Constraint/Or.php | 158 - .../Framework/Constraint/PCREMatch.php | 106 - .../PHPUnit/Framework/Constraint/SameSize.php | 74 - .../Framework/Constraint/StringContains.php | 123 - .../Framework/Constraint/StringEndsWith.php | 97 - .../Framework/Constraint/StringMatches.php | 118 - .../Framework/Constraint/StringStartsWith.php | 97 - .../Constraint/TraversableContains.php | 153 - .../Constraint/TraversableContainsOnly.php | 136 - .../PHPUnit/Framework/Constraint/Xor.php | 163 - .../src/phpunit/PHPUnit/Framework/Error.php | 77 - .../PHPUnit/Framework/Error/Deprecated.php | 66 - .../PHPUnit/Framework/Error/Notice.php | 66 - .../PHPUnit/Framework/Error/Warning.php | 66 - .../phpunit/PHPUnit/Framework/Exception.php | 60 - .../Framework/ExpectationFailedException.php | 83 - .../PHPUnit/Framework/IncompleteTest.php | 61 - .../PHPUnit/Framework/IncompleteTestError.php | 61 - .../phpunit/PHPUnit/Framework/OutputError.php | 61 - .../Framework/Process/TestCaseMethod.tpl.dist | 51 - .../PHPUnit/Framework/SelfDescribing.php | 66 - .../phpunit/PHPUnit/Framework/SkippedTest.php | 60 - .../PHPUnit/Framework/SkippedTestError.php | 61 - .../Framework/SkippedTestSuiteError.php | 61 - .../PHPUnit/Framework/SyntheticError.php | 122 - .../src/phpunit/PHPUnit/Framework/Test.php | 67 - .../phpunit/PHPUnit/Framework/TestCase.php | 1833 -------- .../phpunit/PHPUnit/Framework/TestFailure.php | 180 - .../PHPUnit/Framework/TestListener.php | 127 - .../phpunit/PHPUnit/Framework/TestResult.php | 957 ---- .../phpunit/PHPUnit/Framework/TestSuite.php | 947 ---- .../Framework/TestSuite/DataProvider.php | 71 - .../src/phpunit/PHPUnit/Framework/Warning.php | 126 - .../phpunit/PHPUnit/Runner/BaseTestRunner.php | 189 - .../Runner/StandardTestSuiteLoader.php | 154 - .../PHPUnit/Runner/TestSuiteLoader.php | 72 - .../src/phpunit/PHPUnit/Runner/Version.php | 77 - .../src/phpunit/PHPUnit/TextUI/Command.php | 985 ----- .../phpunit/PHPUnit/TextUI/ResultPrinter.php | 639 --- .../src/phpunit/PHPUnit/TextUI/TestRunner.php | 809 ---- .../src/phpunit/PHPUnit/Util/Class.php | 407 -- .../phpunit/PHPUnit/Util/Configuration.php | 1012 ----- .../PHPUnit/Util/DeprecatedFeature.php | 103 - .../PHPUnit/Util/DeprecatedFeature/Logger.php | 202 - .../phpunit/src/phpunit/PHPUnit/Util/Diff.php | 293 -- .../src/phpunit/PHPUnit/Util/ErrorHandler.php | 133 - .../phpunit/src/phpunit/PHPUnit/Util/File.php | 309 -- .../src/phpunit/PHPUnit/Util/Fileloader.php | 110 - .../src/phpunit/PHPUnit/Util/Filesystem.php | 114 - .../src/phpunit/PHPUnit/Util/Filter.php | 134 - .../src/phpunit/PHPUnit/Util/Getopt.php | 208 - .../src/phpunit/PHPUnit/Util/GlobalState.php | 421 -- .../PHPUnit/Util/InvalidArgumentHelper.php | 80 - .../src/phpunit/PHPUnit/Util/Log/JSON.php | 239 - .../src/phpunit/PHPUnit/Util/Log/JUnit.php | 483 -- .../src/phpunit/PHPUnit/Util/Log/TAP.php | 255 -- .../phpunit/src/phpunit/PHPUnit/Util/PHP.php | 325 -- .../src/phpunit/PHPUnit/Util/PHP/Default.php | 68 - .../src/phpunit/PHPUnit/Util/PHP/Windows.php | 91 - .../src/phpunit/PHPUnit/Util/Printer.php | 209 - .../src/phpunit/PHPUnit/Util/Skeleton.php | 146 - .../phpunit/PHPUnit/Util/Skeleton/Class.php | 325 -- .../Util/Skeleton/Template/Class.tpl.dist | 7 - .../Template/IncompleteTestMethod.tpl.dist | 12 - .../Util/Skeleton/Template/Method.tpl.dist | 9 - .../Util/Skeleton/Template/TestClass.tpl.dist | 31 - .../Skeleton/Template/TestMethod.tpl.dist | 13 - .../Skeleton/Template/TestMethodBool.tpl.dist | 12 - .../Template/TestMethodBoolStatic.tpl.dist | 12 - .../Template/TestMethodException.tpl.dist | 11 - .../TestMethodExceptionStatic.tpl.dist | 11 - .../Template/TestMethodStatic.tpl.dist | 13 - .../phpunit/PHPUnit/Util/Skeleton/Test.php | 379 -- .../src/phpunit/PHPUnit/Util/String.php | 119 - .../phpunit/src/phpunit/PHPUnit/Util/Test.php | 566 --- .../PHPUnit/Util/TestDox/NamePrettifier.php | 178 - .../PHPUnit/Util/TestDox/ResultPrinter.php | 348 -- .../Util/TestDox/ResultPrinter/HTML.php | 124 - .../Util/TestDox/ResultPrinter/Text.php | 96 - .../PHPUnit/Util/TestSuiteIterator.php | 149 - .../phpunit/src/phpunit/PHPUnit/Util/Type.php | 304 -- .../phpunit/src/phpunit/PHPUnit/Util/XML.php | 902 ---- .../eher/phpunit/src/phpunit/README.markdown | 81 - .../Tests/Extensions/RepeatedTestTest.php | 109 - .../phpunit/Tests/Framework/AssertTest.php | 3925 ----------------- .../Tests/Framework/ComparatorTest.php | 160 - .../Tests/Framework/ConstraintTest.php | 3450 --------------- .../src/phpunit/Tests/Framework/SuiteTest.php | 186 - .../phpunit/Tests/Framework/TestCaseTest.php | 383 -- .../Tests/Framework/TestImplementorTest.php | 80 - .../Tests/Framework/TestListenerTest.php | 146 - .../src/phpunit/Tests/Regression/1021.phpt | 19 - .../Tests/Regression/1021/Issue1021Test.php | 23 - .../src/phpunit/Tests/Regression/578.phpt | 37 - .../Tests/Regression/578/Issue578Test.php | 20 - .../src/phpunit/Tests/Regression/684.phpt | 26 - .../Tests/Regression/684/Issue684Test.php | 4 - .../src/phpunit/Tests/Regression/783.phpt | 21 - .../Tests/Regression/783/ChildSuite.php | 15 - .../phpunit/Tests/Regression/783/OneTest.php | 10 - .../Tests/Regression/783/ParentSuite.php | 13 - .../phpunit/Tests/Regression/783/TwoTest.php | 10 - .../phpunit/Tests/Regression/GitHub/244.phpt | 40 - .../Regression/GitHub/244/Issue244Test.php | 55 - .../phpunit/Tests/Regression/GitHub/433.phpt | 34 - .../Regression/GitHub/433/Issue433Test.php | 21 - .../phpunit/Tests/Regression/GitHub/445.phpt | 35 - .../Regression/GitHub/445/Issue445Test.php | 21 - .../phpunit/Tests/Regression/GitHub/503.phpt | 34 - .../Regression/GitHub/503/Issue503Test.php | 11 - .../phpunit/Tests/Regression/GitHub/74.phpt | 31 - .../Regression/GitHub/74/Issue74Test.php | 9 - .../Regression/GitHub/74/NewException.php | 4 - .../Tests/Runner/BaseTestRunnerTest.php | 66 - .../Tests/TextUI/abstract-test-class.phpt | 29 - .../Tests/TextUI/concrete-test-class.phpt | 22 - .../dataprovider-log-xml-isolation.phpt | 49 - .../Tests/TextUI/dataprovider-log-xml.phpt | 50 - .../Tests/TextUI/dataprovider-testdox.phpt | 19 - .../src/phpunit/Tests/TextUI/debug.phpt | 28 - .../Tests/TextUI/default-isolation.phpt | 22 - .../src/phpunit/Tests/TextUI/default.phpt | 21 - .../Tests/TextUI/dependencies-isolation.phpt | 42 - .../phpunit/Tests/TextUI/dependencies.phpt | 42 - .../Tests/TextUI/dependencies2-isolation.phpt | 23 - .../phpunit/Tests/TextUI/dependencies2.phpt | 22 - .../Tests/TextUI/dependencies3-isolation.phpt | 23 - .../phpunit/Tests/TextUI/dependencies3.phpt | 21 - .../phpunit/Tests/TextUI/empty-testcase.phpt | 29 - .../Tests/TextUI/exclude-group-isolation.phpt | 24 - .../phpunit/Tests/TextUI/exclude-group.phpt | 23 - .../Tests/TextUI/failure-isolation.phpt | 144 - .../src/phpunit/Tests/TextUI/failure.phpt | 144 - .../Tests/TextUI/filter-class-isolation.phpt | 24 - .../phpunit/Tests/TextUI/filter-class.phpt | 23 - .../Tests/TextUI/filter-method-isolation.phpt | 24 - .../phpunit/Tests/TextUI/filter-method.phpt | 23 - .../phpunit/Tests/TextUI/group-isolation.phpt | 24 - .../src/phpunit/Tests/TextUI/group.phpt | 23 - .../src/phpunit/Tests/TextUI/help.phpt | 66 - .../src/phpunit/Tests/TextUI/help2.phpt | 67 - .../src/phpunit/Tests/TextUI/list-groups.phpt | 22 - .../src/phpunit/Tests/TextUI/log-json.phpt | 23 - .../src/phpunit/Tests/TextUI/log-tap.phpt | 28 - .../src/phpunit/Tests/TextUI/log-xml.phpt | 31 - .../src/phpunit/Tests/TextUI/skeleton.phpt | 21 - .../Tests/TextUI/strict-incomplete.phpt | 23 - .../Tests/TextUI/strict-isolation.phpt | 24 - .../src/phpunit/Tests/TextUI/strict.phpt | 23 - .../phpunit/src/phpunit/Tests/TextUI/tap.phpt | 20 - .../phpunit/Tests/TextUI/testdox-html.phpt | 23 - .../phpunit/Tests/TextUI/testdox-text.phpt | 27 - .../src/phpunit/Tests/TextUI/testdox.phpt | 21 - .../src/phpunit/Tests/Util/ClassTest.php | 85 - .../phpunit/Tests/Util/ConfigurationTest.php | 329 -- .../src/phpunit/Tests/Util/DiffTest.php | 269 -- .../Tests/Util/TestDox/NamePrettifierTest.php | 109 - .../src/phpunit/Tests/Util/TestTest.php | 198 - .../src/phpunit/Tests/Util/TypeTest.php | 268 -- .../src/phpunit/Tests/Util/XMLTest.php | 324 -- .../src/phpunit/Tests/_files/AbstractTest.php | 7 - .../src/phpunit/Tests/_files/Author.php | 67 - .../src/phpunit/Tests/_files/BankAccount.php | 117 - .../phpunit/Tests/_files/BankAccountTest.php | 134 - .../phpunit/src/phpunit/Tests/_files/Book.php | 60 - .../src/phpunit/Tests/_files/Calculator.php | 14 - .../_files/ClassWithNonPublicAttributes.php | 29 - .../Tests/_files/ClassWithToString.php | 62 - .../src/phpunit/Tests/_files/ConcreteTest.php | 9 - .../phpunit/Tests/_files/DataProviderTest.php | 21 - .../Tests/_files/DependencyFailureTest.php | 22 - .../Tests/_files/DependencySuccessTest.php | 21 - .../Tests/_files/DependencyTestSuite.php | 16 - .../phpunit/Tests/_files/DoubleTestCase.php | 25 - .../Tests/_files/EmptyTestCaseTest.php | 4 - .../src/phpunit/Tests/_files/Error.php | 8 - .../ExceptionInAssertPostConditionsTest.php | 35 - .../ExceptionInAssertPreConditionsTest.php | 35 - .../Tests/_files/ExceptionInSetUpTest.php | 35 - .../Tests/_files/ExceptionInTearDownTest.php | 35 - .../phpunit/Tests/_files/ExceptionInTest.php | 35 - .../phpunit/Tests/_files/ExceptionTest.php | 65 - .../src/phpunit/Tests/_files/Failure.php | 8 - .../src/phpunit/Tests/_files/FailureTest.php | 76 - .../phpunit/Tests/_files/IncompleteTest.php | 8 - .../Tests/_files/InheritedTestCase.php | 9 - .../src/phpunit/Tests/_files/MockRunner.php | 7 - .../Tests/_files/MultiDependencyTest.php | 23 - .../Tests/_files/NoArgTestCaseTest.php | 7 - .../phpunit/Tests/_files/NoTestCaseClass.php | 4 - .../src/phpunit/Tests/_files/NoTestCases.php | 7 - .../src/phpunit/Tests/_files/NonStatic.php | 8 - .../Tests/_files/NotPublicTestCase.php | 11 - .../phpunit/Tests/_files/NotVoidTestCase.php | 4 - .../src/phpunit/Tests/_files/NothingTest.php | 7 - .../src/phpunit/Tests/_files/OneTestCase.php | 11 - .../phpunit/Tests/_files/OutputTestCase.php | 27 - .../phpunit/Tests/_files/OverrideTestCase.php | 9 - .../phpunit/Tests/_files/RequirementsTest.php | 72 - .../src/phpunit/Tests/_files/SampleClass.php | 14 - .../_files/SelectorAssertionsFixture.html | 41 - .../src/phpunit/Tests/_files/Singleton.php | 22 - .../src/phpunit/Tests/_files/StackTest.php | 24 - .../src/phpunit/Tests/_files/Struct.php | 10 - .../src/phpunit/Tests/_files/Success.php | 7 - .../Tests/_files/TemplateMethodsTest.php | 52 - .../src/phpunit/Tests/_files/TestIterator.php | 36 - .../Tests/_files/ThrowExceptionTestCase.php | 8 - .../Tests/_files/ThrowNoExceptionTestCase.php | 7 - .../src/phpunit/Tests/_files/WasRun.php | 10 - .../phpunit/src/phpunit/Tests/_files/bar.xml | 1 - .../phpunit/Tests/_files/configuration.xml | 113 - .../Tests/_files/expectedFileFormat.txt | 1 - .../phpunit/src/phpunit/Tests/_files/foo.xml | 1 - ...uctureAttributesAreSameButValuesAreNot.xml | 10 - .../Tests/_files/structureExpected.xml | 10 - .../Tests/_files/structureIgnoreTextNodes.xml | 13 - .../_files/structureIsSameButDataIsNot.xml | 10 - .../structureWrongNumberOfAttributes.xml | 10 - .../_files/structureWrongNumberOfNodes.xml | 9 - vendor/eher/phpunit/src/phpunit/build.xml | 158 - .../Whitespace/ConcatenationSpacingSniff.php | 22 - .../src/phpunit/build/PHPCS/ruleset.xml | 35 - .../phpunit/src/phpunit/build/assertions.php | 65 - .../phpunit/src/phpunit/build/create-phar.php | 60 - .../eher/phpunit/src/phpunit/build/phpmd.xml | 27 - vendor/eher/phpunit/src/phpunit/package.xml | 575 --- vendor/eher/phpunit/src/phpunit/phpunit.bat | 43 - vendor/eher/phpunit/src/phpunit/phpunit.php | 46 - .../eher/phpunit/src/phpunit/phpunit.xml.dist | 40 - vendor/facebook/php-sdk/.gitignore | 1 - vendor/facebook/php-sdk/.travis.yml | 5 - vendor/facebook/php-sdk/changelog.md | 28 - vendor/facebook/php-sdk/composer.json | 22 - vendor/facebook/php-sdk/examples/example.php | 102 - .../facebook/php-sdk/examples/with_js_sdk.php | 59 - vendor/facebook/php-sdk/readme.md | 85 - vendor/facebook/php-sdk/src/base_facebook.php | 1441 ------ vendor/facebook/php-sdk/src/facebook.php | 160 - .../php-sdk/src/fb_ca_chain_bundle.crt | 3920 ---------------- vendor/facebook/php-sdk/tests/bootstrap.php | 5 - vendor/facebook/php-sdk/tests/tests.php | 2034 --------- .../Symfony/Component/Finder/.gitignore | 1 - .../Finder/Adapter/AbstractAdapter.php | 15 +- .../Finder/Adapter/AbstractFindAdapter.php | 40 +- .../Finder/Adapter/AdapterInterface.php | 15 +- .../Finder/Adapter/BsdFindAdapter.php | 2 +- .../Finder/Adapter/GnuFindAdapter.php | 4 +- .../Component/Finder/Adapter/PhpAdapter.php | 2 +- .../Symfony/Component/Finder/CHANGELOG.md | 10 + .../Finder/Comparator/Comparator.php | 2 +- .../Finder/Comparator/DateComparator.php | 1 - .../Finder/Exception/ExceptionInterface.php | 9 + .../Finder/Expression/Expression.php | 2 +- .../Component/Finder/Expression/Regex.php | 8 +- .../Symfony/Component/Finder/Finder.php | 35 +- .../finder/Symfony/Component/Finder/Glob.php | 4 +- .../Finder/Iterator/CustomFilterIterator.php | 2 +- .../Iterator/DateRangeFilterIterator.php | 6 +- .../Iterator/DepthRangeFilterIterator.php | 2 +- .../ExcludeDirectoryFilterIterator.php | 5 +- .../Iterator/FileTypeFilterIterator.php | 4 +- .../Iterator/FilecontentFilterIterator.php | 2 +- .../Iterator/FilenameFilterIterator.php | 3 +- .../Finder/Iterator/FilterIterator.php | 9 +- .../Iterator/MultiplePcreFilterIterator.php | 8 +- .../Finder/Iterator/PathFilterIterator.php | 3 +- .../Iterator/RecursiveDirectoryIterator.php | 87 +- .../Iterator/SizeRangeFilterIterator.php | 2 +- .../Finder/Iterator/SortableIterator.php | 12 +- .../finder/Symfony/Component/Finder/LICENSE | 2 +- .../finder/Symfony/Component/Finder/README.md | 2 +- .../Component/Finder/Shell/Command.php | 58 +- .../Symfony/Component/Finder/Shell/Shell.php | 14 +- .../Symfony/Component/Finder/SplFileInfo.php | 2 +- .../Tests/Comparator/DateComparatorTest.php | 1 - .../Tests/Comparator/NumberComparatorTest.php | 4 +- .../Tests/Expression/ExpressionTest.php | 2 +- .../Finder/Tests/Expression/GlobTest.php | 2 +- .../Finder/Tests/Expression/RegexTest.php | 2 +- .../Component/Finder/Tests/FinderTest.php | 141 +- .../Iterator/DateRangeFilterIteratorTest.php | 8 +- .../Iterator/DepthRangeFilterIteratorTest.php | 1 - .../ExcludeDirectoryFilterIteratorTest.php | 5 +- .../Tests/Iterator/FilePathsIteratorTest.php | 6 +- .../Iterator/FileTypeFilterIteratorTest.php | 2 +- .../FilecontentFilterIteratorTest.php | 11 +- .../Finder/Tests/Iterator/Iterator.php | 3 +- .../Tests/Iterator/IteratorTestCase.php | 62 + .../Tests/Iterator/MockFileListIterator.php | 2 +- .../Finder/Tests/Iterator/MockSplFileInfo.php | 6 +- .../Tests/Iterator/PathFilterIteratorTest.php | 14 +- .../Tests/Iterator/RealIteratorTestCase.php | 17 +- .../Iterator/SizeRangeFilterIteratorTest.php | 2 +- .../Tests/Iterator/SortableIteratorTest.php | 82 +- .../Symfony/Component/Finder/composer.json | 2 +- .../Symfony/Component/Finder/phpunit.xml.dist | 11 +- 1202 files changed, 6632 insertions(+), 130748 deletions(-) create mode 100644 app/config/app.php create mode 100644 app/config/database.php create mode 100644 app/config/development/database.php create mode 100644 app/config/plugins.php create mode 100644 app/controllers/BaseController.php create mode 100644 app/controllers/IndexController.php create mode 100644 app/controllers/PhotoController.php create mode 100644 app/controllers/UserController.php create mode 100644 app/models/Post.php create mode 100644 app/models/PostLikes.php create mode 100644 app/models/User.php create mode 100644 app/models/UserFollowers.php create mode 100644 app/routes.php delete mode 100644 app/samples/Facebook.php delete mode 100644 app/samples/Mkt.php create mode 100644 app/views/layouts/default.php create mode 100644 app/views/photo/add.php create mode 100644 app/views/photo/list.php create mode 100644 app/views/user/perfil.php create mode 100644 app/views/user/register.php create mode 100644 estrutura.sql create mode 100644 library/Skp/Auth/AuthPlugin.php create mode 100644 library/Skp/Auth/Guard.php create mode 100644 library/Skp/Auth/UserInterface.php create mode 100644 library/Skp/Component/HttpKernel/Controller/ControllerResolver.php create mode 100644 library/Skp/Database/EloquentPlugin.php create mode 100644 library/Skp/Foundation/Application.php create mode 100644 library/Skp/Foundation/Controller.php create mode 100644 library/Skp/Model.php create mode 100644 library/Skp/Plugin/PluginAbstract.php create mode 100644 library/Skp/Registry.php create mode 100644 library/Skp/Routing/Dispatcher.php create mode 100644 library/Skp/Support/helpers.php create mode 100644 library/Skp/Validation/Validator.php delete mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/css/semantic.min.css create mode 100644 public/css/styles.css create mode 100644 public/fonts/basic.icons.eot create mode 100644 public/fonts/basic.icons.svg create mode 100644 public/fonts/basic.icons.ttf create mode 100644 public/fonts/basic.icons.woff create mode 100644 public/fonts/icons.eot create mode 100644 public/fonts/icons.otf create mode 100644 public/fonts/icons.svg create mode 100644 public/fonts/icons.ttf create mode 100644 public/fonts/icons.woff create mode 100644 public/images/loader-large-inverted.gif create mode 100644 public/images/loader-large.gif create mode 100644 public/images/loader-medium-inverted.gif create mode 100644 public/images/loader-medium.gif create mode 100644 public/images/loader-mini-inverted.gif create mode 100644 public/images/loader-mini.gif create mode 100644 public/images/loader-small-inverted.gif create mode 100644 public/images/loader-small.gif create mode 100644 public/images/noise-1.png create mode 100644 public/index.php create mode 100644 public/javascript/scripts.js create mode 100644 public/javascript/semantic.min.js create mode 100644 public/pool/.gitignore delete mode 100644 tests/MktTest.php delete mode 120000 vendor/bin/dbunit delete mode 120000 vendor/bin/phpcov delete mode 120000 vendor/bin/phpcpd delete mode 120000 vendor/bin/phpdcd delete mode 120000 vendor/bin/phploc delete mode 120000 vendor/bin/phpunit delete mode 120000 vendor/bin/phpunit-skelgen delete mode 100644 vendor/eher/phpunit/.gitignore delete mode 100644 vendor/eher/phpunit/README.md delete mode 100755 vendor/eher/phpunit/bin/dbunit delete mode 100644 vendor/eher/phpunit/bin/init.php delete mode 100755 vendor/eher/phpunit/bin/phpcov delete mode 100755 vendor/eher/phpunit/bin/phpcpd delete mode 100755 vendor/eher/phpunit/bin/phpdcd delete mode 100755 vendor/eher/phpunit/bin/phploc delete mode 100755 vendor/eher/phpunit/bin/phpunit delete mode 100755 vendor/eher/phpunit/bin/phpunit-skelgen delete mode 100755 vendor/eher/phpunit/build.sh delete mode 100644 vendor/eher/phpunit/composer.json delete mode 100644 vendor/eher/phpunit/src/dbunit/.gitattributes delete mode 100644 vendor/eher/phpunit/src/dbunit/.gitignore delete mode 100644 vendor/eher/phpunit/src/dbunit/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/dbunit/LICENSE delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/AbstractTester.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/DataSetIsEqual.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableIsEqual.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableRowCount.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DefaultDatabaseConnection.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/FilteredDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IDatabaseConnection.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IMetaData.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/InformationSchema.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/MySQL.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Oci.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/PgSQL.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/SqlSrv.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Sqlite.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/ResultSetTable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/Table.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableIterator.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableMetaData.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTableMetaData.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractXmlDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CompositeDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CsvDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DataSetFilter.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IPersistable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ISpec.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableIterator.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableMetaData.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/MysqlXmlDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Abstract.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Factory.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/FlatXml.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/MysqlXml.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Xml.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryTable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTableIterator.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Csv.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbQuery.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbTable.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Factory.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/FlatXml.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/IFactory.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Xml.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Yaml.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableFilter.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableMetaDataFilter.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/XmlDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/YamlDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DefaultTester.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Exception.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/IDatabaseListConsumer.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/ITester.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Composite.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Delete.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/DeleteAll.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Exception.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Factory.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/IDatabaseOperation.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Insert.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Null.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Replace.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/RowBased.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Truncate.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Update.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/TestCase.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Command.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Context.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMedium.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMediumPrinter.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMode.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IModeFactory.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/InvalidModeException.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Mediums/Text.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/ModeFactory.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet.php delete mode 100644 vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet/Arguments.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccount.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountCompositeTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTestMySQL.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-deposits.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-new-account.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-withdrawals.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-seed.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/Constraint/TableRowCountTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DB/DefaultDatabaseConnectionTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/AbstractTableTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/CompositeDataSetTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/CsvDataSetTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/FilterTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/PersistorTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryDataSetTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryTableTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementDataSetTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementTableTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/XmlDataSetsTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/DataSet/YamlDataSetTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsMySQLTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/Operation/RowBasedTest.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table1.csv delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table2.csv delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/DatabaseTestUtility.php delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertResult.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteAllOperationTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationResult.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertResult.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestComparison.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestFixture.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlDataSet.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriter.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriterEntities.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationResult.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/MysqlXmlDataSet.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsMySQLTestFixture.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsTestFixture.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/QueryDataSetTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationResult.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/RowBasedExecute.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationResult.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationTest.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlDataSet.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriter.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriterEntities.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/Tests/_files/YamlDataSets/testDataSet.yaml delete mode 100644 vendor/eher/phpunit/src/dbunit/build.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/dbunit/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/dbunit/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/dbunit.bat delete mode 100755 vendor/eher/phpunit/src/dbunit/dbunit.php delete mode 100644 vendor/eher/phpunit/src/dbunit/package.xml delete mode 100644 vendor/eher/phpunit/src/dbunit/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/autoload.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocument.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocumentFragment.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMElement.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMException.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter/xhtml.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMNode.php delete mode 100644 vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMXPath.php delete mode 100644 vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/Configuration.php delete mode 100644 vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/FinderFacade.php delete mode 100644 vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php delete mode 100644 vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php.in delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/.gitattributes delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/.gitignore delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/LICENSE delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver/Xdebug.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Exception.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Filter.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Clover.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Factory.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Dashboard.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Directory.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/close12_1.gif delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/container-min.js delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/container.css delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.png delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.png delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_no_yui.html.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/glass.png delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/highcharts.js delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/jquery.min.js delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/style.css delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/yahoo-dom-event.js delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/yui_item.js delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Directory.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/File.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Iterator.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/PHP.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Text.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Util.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/README.markdown delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/FilterTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/CloverTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/FactoryTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/UtilTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverageTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/TestCase.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount-clover.xml delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccountTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassExtendedTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageFunctionTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageMethodTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNoneTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPrivateTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotProtectedTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPublicTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePrivateTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageProtectedTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePublicTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredClass.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredFunction.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageClassExtendedTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageClassTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageMethodTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPrivateTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotProtectedTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPublicTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePrivateTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageProtectedTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePublicTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveredClass.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NotExistingCoveredElementTest.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/ignored-lines-clover.xml delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/source_with_ignore.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/source_with_namespace.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/source_without_ignore.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/Tests/_files/source_without_namespace.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/build.xml delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/package.xml delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/scripts/auto_append.php delete mode 100644 vendor/eher/phpunit/src/php-code-coverage/scripts/auto_prepend.php delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/.gitattributes delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/.gitignore delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/File/Iterator.php delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Facade.php delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Factory.php delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/LICENSE delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/README.markdown delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/build.xml delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/php-file-iterator/package.xml delete mode 100644 vendor/eher/phpunit/src/php-text-template/.gitattributes delete mode 100644 vendor/eher/phpunit/src/php-text-template/.gitignore delete mode 100644 vendor/eher/phpunit/src/php-text-template/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/php-text-template/LICENSE delete mode 100644 vendor/eher/phpunit/src/php-text-template/README.markdown delete mode 100644 vendor/eher/phpunit/src/php-text-template/Text/Template.php delete mode 100644 vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php delete mode 100644 vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/php-text-template/build.xml delete mode 100644 vendor/eher/phpunit/src/php-text-template/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/php-text-template/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/php-text-template/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/php-text-template/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/php-text-template/package.xml delete mode 100644 vendor/eher/phpunit/src/php-timer/.gitattributes delete mode 100644 vendor/eher/phpunit/src/php-timer/.gitignore delete mode 100644 vendor/eher/phpunit/src/php-timer/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/php-timer/LICENSE delete mode 100644 vendor/eher/phpunit/src/php-timer/PHP/Timer.php delete mode 100644 vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php delete mode 100644 vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/php-timer/README.markdown delete mode 100644 vendor/eher/phpunit/src/php-timer/Tests/TimerTest.php delete mode 100644 vendor/eher/phpunit/src/php-timer/build.xml delete mode 100644 vendor/eher/phpunit/src/php-timer/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/php-timer/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/php-timer/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/php-timer/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/php-timer/package.xml delete mode 100644 vendor/eher/phpunit/src/php-timer/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/php-token-stream/.gitattributes delete mode 100644 vendor/eher/phpunit/src/php-token-stream/.gitignore delete mode 100644 vendor/eher/phpunit/src/php-token-stream/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/php-token-stream/LICENSE delete mode 100644 vendor/eher/phpunit/src/php-token-stream/PHP/Token.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/CachingFactory.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/README.markdown delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/Token/ClassTest.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/Token/FunctionTest.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/Token/IncludeTest.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/Token/InterfaceTest.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/Token/NamespaceTest.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/TokenTest.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/classExtendsNamespacedClass.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/classInNamespace.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/classInScopedNamespace.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/issue19.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/multipleNamespacesWithOneClassUsingBraces.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/multipleNamespacesWithOneClassUsingNonBraceSyntax.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/source.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/source2.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/source3.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/Tests/_files/source4.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/build.xml delete mode 100644 vendor/eher/phpunit/src/php-token-stream/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/php-token-stream/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/php-token-stream/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/php-token-stream/package.xml delete mode 100644 vendor/eher/phpunit/src/php-token-stream/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/base.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/base_autoload.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/autoload.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/double_class_repository_prefix.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/exception.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/extension_not_found.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_exception.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_io.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_not_found.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_permission.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/functionality_not_supported.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/init_callback_configured.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_callback_class.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_parent_class.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_not_found.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_permission.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_not_found.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_value.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/value.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/exceptions/whatever.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/ezc_bootstrap.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/features.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/file.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/init.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/interfaces/configuration_initializer.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/interfaces/exportable.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/interfaces/persistable.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/metadata.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/metadata/pear.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/metadata/tarball.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/options.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/options/autoload.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/struct.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/structs/file_find_context.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/Base/structs/repository_directory.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/console_autoload.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/menu_dialog.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/question_dialog.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/menu_dialog_default.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_collection.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_mapping.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_regex.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_type.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog_viewer.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_already_registered.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_mandatory_violation.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_too_many.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_type_violation.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/dialog_abort.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/exception.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_option_name.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_output_target.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_position_stored.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_valid_dialog_result.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_already_registered.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_arguments_violation.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_dependency_violation.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_exclusion_violation.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_mandatory_violation.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_missing_value.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_no_alias.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_not_exists.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_string_not_wellformed.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_too_many_values.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_type_violation.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/input.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/argument.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/arguments.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/help_generators/standard.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/option.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/validators/standard.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog_validator.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/input_help_generator.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/input_validator.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/menu_dialog_validator.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/question_dialog_validator.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/dialog.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/menu_dialog.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/output.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/progressbar.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/progressmonitor.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/question_dialog.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/statusbar.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/options/table.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/output.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/progressbar.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/progressmonitor.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/statusbar.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/structs/option_rule.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/structs/output_format.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/structs/output_formats.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/table.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/table/cell.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/table/row.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/ConsoleTools/tools/string.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/autoload/base_autoload.php delete mode 100644 vendor/eher/phpunit/src/php/ezc/autoload/console_autoload.php delete mode 100644 vendor/eher/phpunit/src/phpcov/.gitattributes delete mode 100644 vendor/eher/phpunit/src/phpcov/.gitignore delete mode 100644 vendor/eher/phpunit/src/phpcov/PHP/CodeCoverage/TextUI/Command.php delete mode 100644 vendor/eher/phpunit/src/phpcov/README.markdown delete mode 100644 vendor/eher/phpunit/src/phpcov/package.xml delete mode 100644 vendor/eher/phpunit/src/phpcov/phpcov.bat delete mode 100755 vendor/eher/phpunit/src/phpcov/phpcov.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/.gitattributes delete mode 100644 vendor/eher/phpunit/src/phpcpd/.gitignore delete mode 100644 vendor/eher/phpunit/src/phpcpd/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/phpcpd/LICENSE delete mode 100644 vendor/eher/phpunit/src/phpcpd/README.markdown delete mode 100644 vendor/eher/phpunit/src/phpcpd/build.xml delete mode 100644 vendor/eher/phpunit/src/phpcpd/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/phpcpd/build/package.xml delete mode 100644 vendor/eher/phpunit/src/phpcpd/build/phpdox.xml delete mode 100644 vendor/eher/phpunit/src/phpcpd/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/phpcpd/phpcpd.bat delete mode 100755 vendor/eher/phpunit/src/phpcpd/phpcpd.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/CodeClone.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/CodeCloneMap.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/Detector/Detector.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/Detector/Strategy/Abstract.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/Detector/Strategy/Default.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/Detector/Strategy/MemoryConserving.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/Log/AbstractXmlLogger.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/Log/PMD.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/TextUI/Command.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/TextUI/ResultPrinter.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/autoload.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/src/autoload.php.in delete mode 100644 vendor/eher/phpunit/src/phpcpd/tests/DetectorTest.php delete mode 100644 vendor/eher/phpunit/src/phpcpd/tests/_files/Math.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/.gitattributes delete mode 100644 vendor/eher/phpunit/src/phpdcd/.gitignore delete mode 100644 vendor/eher/phpunit/src/phpdcd/PHPDCD/Autoload.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/PHPDCD/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/phpdcd/PHPDCD/Detector.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/PHPDCD/TextUI/Command.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/PHPDCD/TextUI/ResultPrinter.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/README.markdown delete mode 100644 vendor/eher/phpunit/src/phpdcd/Tests/DetectorTest.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/Tests/_files/declarations.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/Tests/_files/function_call.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/Tests/_files/function_call2.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/Tests/_files/issue_5.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/Tests/_files/method_call.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/Tests/_files/static_method_call.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/build.xml delete mode 100644 vendor/eher/phpunit/src/phpdcd/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/phpdcd/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/phpdcd/package.xml delete mode 100644 vendor/eher/phpunit/src/phpdcd/phpdcd.bat delete mode 100755 vendor/eher/phpunit/src/phpdcd/phpdcd.php delete mode 100644 vendor/eher/phpunit/src/phpdcd/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/phploc/.gitattributes delete mode 100644 vendor/eher/phpunit/src/phploc/.gitignore delete mode 100644 vendor/eher/phpunit/src/phploc/PHPLOC/Analyser.php delete mode 100644 vendor/eher/phpunit/src/phploc/PHPLOC/Autoload.php delete mode 100644 vendor/eher/phpunit/src/phploc/PHPLOC/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/phploc/PHPLOC/TextUI/Command.php delete mode 100644 vendor/eher/phpunit/src/phploc/PHPLOC/TextUI/ResultPrinter/CSV.php delete mode 100644 vendor/eher/phpunit/src/phploc/PHPLOC/TextUI/ResultPrinter/Text.php delete mode 100644 vendor/eher/phpunit/src/phploc/PHPLOC/TextUI/ResultPrinter/XML.php delete mode 100644 vendor/eher/phpunit/src/phploc/README.markdown delete mode 100644 vendor/eher/phpunit/src/phploc/Tests/AnalyzerTest.php delete mode 100644 vendor/eher/phpunit/src/phploc/Tests/_files/source.php delete mode 100644 vendor/eher/phpunit/src/phploc/Tests/_files/tests.php delete mode 100644 vendor/eher/phpunit/src/phploc/Tests/_files/twoTestsThatIndirectlyExtendPHPUnitTestCase.php delete mode 100644 vendor/eher/phpunit/src/phploc/build.xml delete mode 100644 vendor/eher/phpunit/src/phploc/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/phploc/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/phploc/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/phploc/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/phploc/package.xml delete mode 100644 vendor/eher/phpunit/src/phploc/phploc.bat delete mode 100755 vendor/eher/phpunit/src/phploc/phploc.php delete mode 100644 vendor/eher/phpunit/src/phploc/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/.gitattributes delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/.gitignore delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/LICENSE delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Autoload.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Identity.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/InvocationMocker.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Match.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/MethodNameMatch.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Namespace.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/ParametersMatch.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Stub.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_class.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_clone.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_object_method.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_static_method.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/trait_class.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/unmocked_clone.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/wsdl_class.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/wsdl_method.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invocation.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invocation/Object.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invocation/Static.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/InvocationMocker.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invokable.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/AnyInvokedCount.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/AnyParameters.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/Invocation.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedAtIndex.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedAtLeastOnce.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedCount.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedRecorder.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/MethodName.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/Parameters.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/StatelessInvocation.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/MockBuilder.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/MockObject.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ConsecutiveCalls.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/Exception.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/MatcherCollection.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/Return.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnArgument.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnCallback.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnSelf.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnValueMap.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/PHPUnit/Framework/MockObject/Verifiable.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/GeneratorTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockBuilderTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/Invocation/ObjectTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/Invocation/StaticTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class_call_parent_clone.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class_dont_call_parent_clone.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class_dont_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class_implementing_interface_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/class_partial.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/interface.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/invocation_object_clone_object.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/invocation_static_clone_object.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class_call_parent_clone.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class_dont_call_parent_clone.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_class_partial.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/namespaced_interface.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/nonexistent_class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/nonexistent_class_with_namespace.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/wsdl_class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/wsdl_class_namespace.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObject/wsdl_class_partial.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/MockObjectTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/AbstractMockTestClass.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/AnInterface.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/FunctionCallback.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/GoogleSearch.wsdl delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/MethodCallback.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/Mockable.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/PartialMockTestClass.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/SomeClass.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/Tests/_files/StaticMockTestClass.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/build.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/package.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-mock-objects/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/.gitignore delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/.gitmodules delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/.travis.yml delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/LICENSE delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Command.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/CommandsHolder.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Driver.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Element.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Element/Select.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Attribute.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Click.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Css.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Equals.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/GenericAccessor.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/GenericPost.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCommand/Value.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/ElementCriteria.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Exception.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Response.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Session.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Session/Cookie.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Session/Cookie/Builder.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Session/Storage.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Session/Timeouts.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/AcceptAlert.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/AlertText.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/DismissAlert.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Frame.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/GenericAccessor.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Url.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionCommand/Window.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Isolated.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/SessionStrategy/Shared.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/StateCommand.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/URL.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/Selenium2TestCase/Window.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumBrowserSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase/Autoload.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase/Driver.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase/append.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase/prepend.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/PHPUnit/Extensions/SeleniumTestSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/README.txt delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/Selenium2TestCase/BaseTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/Selenium2TestCase/FailuresTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/Selenium2TestCase/PageObjectTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/Selenium2TestCase/URLTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/Selenium2TestCaseTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/SeleniumTestCase/FailuresTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/SeleniumTestCase/MultipleBrowsersTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/SeleniumTestCase/RegressionsTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/SeleniumTestCase/SkippedTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/SeleniumTestCase/SuiteBuildingTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/SeleniumTestCase/Ticket114Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/Tests/SeleniumTestCaseTest.php delete mode 100755 vendor/eher/phpunit/src/phpunit-selenium/before_script.sh delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/build.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/package.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/phpunit-selenium-bootstrap.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/run-phpunit.php delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/CamelCasePage.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_check_uncheck.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_click_javascript_page.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_click_page1.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_click_page2.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_confirm.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_delayed_element.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_dummy_page.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_editable.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_element_selection.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_focus_on_blur.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_form_elements.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_form_events.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_frames.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_geometry.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_locators.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_multiselect.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_open.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_page.slow.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_prompt.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_reload_onchange_page.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_select.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_select_window.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_select_window_popup.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_slowloading_page.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_store_value.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_submit.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_type_page1.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_type_page2.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_verifications.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_verify_alert.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_visibility.html delete mode 100644 vendor/eher/phpunit/src/phpunit-selenium/selenium-1-tests/html/test_wait.html delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/.gitignore delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/LICENSE delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Autoload.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Class.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/Class.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/IncompleteTestMethod.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/Method.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/TestClass.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/TestMethod.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/TestMethodBool.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/TestMethodBoolStatic.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/TestMethodException.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/TestMethodExceptionStatic.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Template/TestMethodStatic.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/PHPUnit/SkeletonGenerator/TextUI/Command.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/README.markdown delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/Tests/_fixture/BankAccount.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/Tests/_fixture/BankAccountNS.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/Tests/_fixture/BankAccountTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/Tests/class-from-test.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/Tests/test-from-class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/Tests/test-from-namespaced-class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/build.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/build/PHPCS/ruleset.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/package.xml delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/phpunit-skelgen.bat delete mode 100755 vendor/eher/phpunit/src/phpunit-skeleton-generator/phpunit-skelgen.php delete mode 100644 vendor/eher/phpunit/src/phpunit-skeleton-generator/phpunit.xml.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/.gitattributes delete mode 100644 vendor/eher/phpunit/src/phpunit/.gitignore delete mode 100644 vendor/eher/phpunit/src/phpunit/ChangeLog.markdown delete mode 100644 vendor/eher/phpunit/src/phpunit/LICENSE delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Autoload.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Autoload.php.in delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/GroupTestSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/OutputTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/PhptTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/PhptTestCase/Logger.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/PhptTestSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/RepeatedTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/TestDecorator.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Extensions/TicketListener.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Assert.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Assert/Functions.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Assert/Functions.php.in delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/AssertionFailedError.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Array.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/DOMDocument.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Double.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Exception.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/MockObject.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Numeric.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Object.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Resource.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Scalar.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/SplObjectStorage.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Comparator/Type.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/ComparatorFactory.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/ComparisonFailure.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/And.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/ArrayHasKey.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/Attribute.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/ClassHasAttribute.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/ClassHasStaticAttribute.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/Composite.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/Count.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/Exception.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/ExceptionCode.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/ExceptionMessage.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/FileExists.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/GreaterThan.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsAnything.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsEmpty.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsEqual.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsFalse.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsIdentical.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsInstanceOf.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsNull.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsTrue.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/IsType.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/LessThan.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/Not.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/ObjectHasAttribute.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/Or.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/PCREMatch.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/SameSize.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/StringContains.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/StringEndsWith.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/StringMatches.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/StringStartsWith.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/TraversableContains.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/TraversableContainsOnly.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Constraint/Xor.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Error.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Error/Deprecated.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Error/Notice.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Error/Warning.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Exception.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/ExpectationFailedException.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/IncompleteTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/IncompleteTestError.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/OutputError.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Process/TestCaseMethod.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/SelfDescribing.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/SkippedTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/SkippedTestError.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/SkippedTestSuiteError.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/SyntheticError.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/TestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/TestFailure.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/TestListener.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/TestResult.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/TestSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/TestSuite/DataProvider.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Framework/Warning.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Runner/BaseTestRunner.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Runner/StandardTestSuiteLoader.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Runner/TestSuiteLoader.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Runner/Version.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/TextUI/Command.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/TextUI/ResultPrinter.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/TextUI/TestRunner.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Class.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Configuration.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/DeprecatedFeature.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/DeprecatedFeature/Logger.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Diff.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/ErrorHandler.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/File.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Fileloader.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Filesystem.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Filter.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Getopt.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/GlobalState.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/InvalidArgumentHelper.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Log/JSON.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Log/JUnit.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Log/TAP.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/PHP.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/PHP/Default.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/PHP/Windows.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Printer.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Class.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/Class.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/IncompleteTestMethod.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/Method.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/TestClass.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/TestMethod.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/TestMethodBool.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/TestMethodBoolStatic.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/TestMethodException.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/TestMethodExceptionStatic.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Template/TestMethodStatic.tpl.dist delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Skeleton/Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/String.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/TestDox/NamePrettifier.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/TestDox/ResultPrinter.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/TestDox/ResultPrinter/HTML.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/TestDox/ResultPrinter/Text.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/TestSuiteIterator.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/Type.php delete mode 100644 vendor/eher/phpunit/src/phpunit/PHPUnit/Util/XML.php delete mode 100644 vendor/eher/phpunit/src/phpunit/README.markdown delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Extensions/RepeatedTestTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Framework/AssertTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Framework/ComparatorTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Framework/ConstraintTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Framework/SuiteTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Framework/TestCaseTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Framework/TestImplementorTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Framework/TestListenerTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/1021.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/1021/Issue1021Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/578.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/578/Issue578Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/684.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/684/Issue684Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/783.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/783/ChildSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/783/OneTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/783/ParentSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/783/TwoTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/244.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/244/Issue244Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/433.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/433/Issue433Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/445.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/445/Issue445Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/503.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/503/Issue503Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/74.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/74/Issue74Test.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Regression/GitHub/74/NewException.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Runner/BaseTestRunnerTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/abstract-test-class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/concrete-test-class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dataprovider-log-xml-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dataprovider-log-xml.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dataprovider-testdox.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/debug.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/default-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/default.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dependencies-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dependencies.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dependencies2-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dependencies2.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dependencies3-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/dependencies3.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/empty-testcase.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/exclude-group-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/exclude-group.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/failure-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/failure.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/filter-class-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/filter-class.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/filter-method-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/filter-method.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/group-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/group.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/help.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/help2.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/list-groups.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/log-json.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/log-tap.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/log-xml.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/skeleton.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/strict-incomplete.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/strict-isolation.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/strict.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/tap.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/testdox-html.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/testdox-text.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/TextUI/testdox.phpt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Util/ClassTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Util/ConfigurationTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Util/DiffTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Util/TestDox/NamePrettifierTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Util/TestTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Util/TypeTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/Util/XMLTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/AbstractTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Author.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/BankAccount.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/BankAccountTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Book.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Calculator.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ClassWithNonPublicAttributes.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ClassWithToString.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ConcreteTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/DataProviderTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/DependencyFailureTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/DependencySuccessTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/DependencyTestSuite.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/DoubleTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/EmptyTestCaseTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Error.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ExceptionInAssertPostConditionsTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ExceptionInAssertPreConditionsTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ExceptionInSetUpTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ExceptionInTearDownTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ExceptionInTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ExceptionTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Failure.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/FailureTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/IncompleteTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/InheritedTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/MockRunner.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/MultiDependencyTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/NoArgTestCaseTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/NoTestCaseClass.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/NoTestCases.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/NonStatic.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/NotPublicTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/NotVoidTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/NothingTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/OneTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/OutputTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/OverrideTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/RequirementsTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/SampleClass.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/SelectorAssertionsFixture.html delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Singleton.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/StackTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Struct.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/Success.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/TemplateMethodsTest.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/TestIterator.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ThrowExceptionTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/ThrowNoExceptionTestCase.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/WasRun.php delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/bar.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/configuration.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/expectedFileFormat.txt delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/foo.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/structureAttributesAreSameButValuesAreNot.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/structureExpected.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/structureIgnoreTextNodes.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/structureIsSameButDataIsNot.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/structureWrongNumberOfAttributes.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/Tests/_files/structureWrongNumberOfNodes.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/build.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php delete mode 100644 vendor/eher/phpunit/src/phpunit/build/PHPCS/ruleset.xml delete mode 100755 vendor/eher/phpunit/src/phpunit/build/assertions.php delete mode 100755 vendor/eher/phpunit/src/phpunit/build/create-phar.php delete mode 100644 vendor/eher/phpunit/src/phpunit/build/phpmd.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/package.xml delete mode 100644 vendor/eher/phpunit/src/phpunit/phpunit.bat delete mode 100755 vendor/eher/phpunit/src/phpunit/phpunit.php delete mode 100644 vendor/eher/phpunit/src/phpunit/phpunit.xml.dist delete mode 100644 vendor/facebook/php-sdk/.gitignore delete mode 100644 vendor/facebook/php-sdk/.travis.yml delete mode 100644 vendor/facebook/php-sdk/changelog.md delete mode 100644 vendor/facebook/php-sdk/composer.json delete mode 100644 vendor/facebook/php-sdk/examples/example.php delete mode 100644 vendor/facebook/php-sdk/examples/with_js_sdk.php delete mode 100644 vendor/facebook/php-sdk/readme.md delete mode 100644 vendor/facebook/php-sdk/src/base_facebook.php delete mode 100644 vendor/facebook/php-sdk/src/facebook.php delete mode 100644 vendor/facebook/php-sdk/src/fb_ca_chain_bundle.crt delete mode 100644 vendor/facebook/php-sdk/tests/bootstrap.php delete mode 100644 vendor/facebook/php-sdk/tests/tests.php diff --git a/.gitignore b/.gitignore index 02fc81a..262bb94 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ -composer.phar \ No newline at end of file +/vendor +composer.lock +.env.*.php +.env.php +.DS_Store +Thumbs.db diff --git a/app/config/app.php b/app/config/app.php new file mode 100644 index 0000000..7c01fce --- /dev/null +++ b/app/config/app.php @@ -0,0 +1,6 @@ + 'pt-BR' + +]; \ No newline at end of file diff --git a/app/config/database.php b/app/config/database.php new file mode 100644 index 0000000..0dc5dcc --- /dev/null +++ b/app/config/database.php @@ -0,0 +1,10 @@ + 'localhost', + 'database' => 'insta_mkt', + 'username' => 'root', + 'password' => '', + +]; diff --git a/app/config/development/database.php b/app/config/development/database.php new file mode 100644 index 0000000..0dc5dcc --- /dev/null +++ b/app/config/development/database.php @@ -0,0 +1,10 @@ + 'localhost', + 'database' => 'insta_mkt', + 'username' => 'root', + 'password' => '', + +]; diff --git a/app/config/plugins.php b/app/config/plugins.php new file mode 100644 index 0000000..38d6167 --- /dev/null +++ b/app/config/plugins.php @@ -0,0 +1,7 @@ + 'Skp\Database\EloquentPlugin', + 'AuthPlugin' => 'Skp\Auth\AuthPlugin', + +]; \ No newline at end of file diff --git a/app/controllers/BaseController.php b/app/controllers/BaseController.php new file mode 100644 index 0000000..b4727c4 --- /dev/null +++ b/app/controllers/BaseController.php @@ -0,0 +1,8 @@ +request->get('a')); + } + +} \ No newline at end of file diff --git a/app/controllers/PhotoController.php b/app/controllers/PhotoController.php new file mode 100644 index 0000000..f09cd04 --- /dev/null +++ b/app/controllers/PhotoController.php @@ -0,0 +1,158 @@ +render('user/register.php', [])); + } + + return new Response($this->render('photo/add.php', [])); + } + + public function sendPhotoAction() + { + if (!$this->request->isMethod('POST') || !isLogged()) { + return new \Illuminate\Http\RedirectResponse('/'); + } + + /** + * @var \Symfony\Component\HttpFoundation\File\UploadedFile $photo + */ + $photo = $this->request->files->get('photo', null); + $data = $this->request->get('form', []); + + $data['photo'] = $photo; + + $validator = Validator::make( + $data, + Post::$rules[Validator::RULE_CREATE], + Post::$messages + ); + + if ($validator->fails()) { + return new Response($this->render('photo/add.php', [ + 'errors' => $validator->messages(), + 'form' => $data + ])); + } + + $guard = \Skp\Registry::get('AuthGuard'); + $user = $guard->user(); + + $post = new Post(); + $post->user_id = $user->id; + $post->description = (isset($data['description'])) ? $data['description'] : ''; + + $saved = $post->save(); + + if ($saved) { + + $path = POOL_PATH . 'photos/' . $post->id . '/'; + + if (!file_exists($path)) { + mkdir($path, 0755, true); + } + + $fileName = $photo->getClientOriginalName(); + + if (file_exists($path . $fileName)) { + unlink($path . $fileName); + } + + if (file_exists($path . 'thumb_' . $fileName)) { + unlink($path . 'thumb_' . $fileName); + } + + try { + + $photo->move($path, $fileName); + + $manager = new ImageManager(); + $manager->make($path . $fileName)->fit(640, 640)->save($path . $fileName); + + $manager->make($path . $fileName)->fit(306, 306)->save($path . 'thumb_' . $fileName); + + $post->name = $fileName; + $post->save(); + + return new \Illuminate\Http\RedirectResponse('/' . $user->username); + + } catch (Exception $e) { + echo $e->getMessage();exit; + } + } + + if ($post->id) { + $post->delete(); + } + + return new Response($this->render('photo/add.php', [ + 'error' => 'Houve um erro inesperado ao adicionar a foto', + 'form' => $data + ])); + } + + public function listAction($username) + { + $user = User::where('username', $username)->first(); + + $photos = []; + $last = false; + + if ($user) { + + $perPage = 9; + $total = $user->posts->count(); + + $pages = ceil($total / $perPage); + $page = $this->request->get('page', 1); + $page = ($page < 1) ? 1 : $page; + $page = ($page > $pages) ? $pages : $page; + $offset = $perPage * ($page - 1); + + $photos = $user->posts()->offset($offset)->take($perPage)->get(); + $last = (bool)($page == $pages); + } + + $this->layout = null; + return new Response($this->render('photo/list.php', [ + 'photos' => $photos, + 'last' => $last, + 'loggedUser' => \Skp\Registry::get('loggedUser') + ])); + } + + public function likeAction($id) + { + $response = ['liked' => false]; + + if (isLogged()) { + + $photo = Post::find($id); + $loggedUser = \Skp\Registry::get('loggedUser'); + + if (!$photo->liked($loggedUser)) { + $photo->like($loggedUser); + + $response['liked'] = true; + } else { + $photo->unlike($loggedUser); + + $response['liked'] = false; + } + + $response['likes'] = $photo->likes()->count(); + + } + + return new \Symfony\Component\HttpFoundation\JsonResponse($response); + } + +} \ No newline at end of file diff --git a/app/controllers/UserController.php b/app/controllers/UserController.php new file mode 100644 index 0000000..a3b03ae --- /dev/null +++ b/app/controllers/UserController.php @@ -0,0 +1,132 @@ +render('user/register.php', [])); + } + + $guard = \Skp\Registry::get('AuthGuard'); + return new \Illuminate\Http\RedirectResponse('/' . $guard->user()->username); + } + + public function perfilAction($username) + { + $user = User::where('username', $username)->first(); + + return new Response($this->render('user/perfil.php', [ + 'user' => $user + ])); + } + + public function followAction($username) + { + $response = ['followed' => false]; + + if (isLogged()) { + + $user = User::where('username', $username)->first(); + $loggedUser = \Skp\Registry::get('loggedUser'); + + if ($user->id != $loggedUser->id) { + + if (!$loggedUser->followed($user)) { + $loggedUser->follow($user); + + $response['followed'] = true; + } else { + $loggedUser->unfollow($user); + + $response['followed'] = false; + } + + } + + } + + return new \Symfony\Component\HttpFoundation\JsonResponse($response); + } + + public function sendRegisterAction() + { + if (!$this->request->isMethod('POST') || isLogged()) { + return new \Illuminate\Http\RedirectResponse('/'); + } + + $data = $this->request->get('form', []); + + $validator = Validator::make( + $data, + User::$rules[Validator::RULE_CREATE], + User::$messages + ); + + if ($validator->fails()) { + return new Response($this->render('user/register.php', [ + 'errors' => $validator->messages(), + 'form' => $data + ])); + } + + $hasher = new \Illuminate\Hashing\BcryptHasher(); + + $user = new User(); + $user->username = $data['username']; + $user->email = $data['email']; + $user->password = $hasher->make($data['password']); + $user->confirmed_at = date('Y-m-d H:i:s'); + $user->confirmed = 1; + + $saved = $user->save(); + + if ($saved) { + $guard = \Skp\Registry::get('AuthGuard'); + $guard->login($user); + + return new \Illuminate\Http\RedirectResponse('/' . $user->username); + } + + return new Response($this->render('user/register.php', [ + 'error' => 'Houve um erro inesperado ao criar sua conta', + 'form' => $data + ])); + } + + public function sendLoginAction() + { + if (!$this->request->isMethod('POST') || isLogged()) { + return new \Illuminate\Http\RedirectResponse('/'); + } + + $data = $this->request->get('login', []); + + $guard = \Skp\Registry::get('AuthGuard'); + $logged = $guard->attempt($data); + + if (!$logged) { + return new Response($this->render('user/register.php', [ + 'error' => 'Usuário e/ou senha inválido(s)', + 'login' => $data + ])); + } + + $user = $guard->user(); + + return new \Illuminate\Http\RedirectResponse('/' . $user->username); + } + + public function logoutAction() + { + $guard = \Skp\Registry::get('AuthGuard'); + $guard->logout(); + + return new \Illuminate\Http\RedirectResponse('/'); + } + +} \ No newline at end of file diff --git a/app/models/Post.php b/app/models/Post.php new file mode 100644 index 0000000..3a43307 --- /dev/null +++ b/app/models/Post.php @@ -0,0 +1,52 @@ + [ + 'photo' => 'required|image', + 'description' => 'max:140', + ], + Validator::RULE_UPDATE => [], + ]; + + public static $messages = [ + 'photo.required' => 'Selecione uma imagem', + 'photo.image' => 'Você só pode enviar imagens', + 'description.max' => 'A descrição não pode ter mais de 140 caracteres', + ]; + + public function likes() + { + return $this->belongsToMany('User', 'post_likes', 'post_id', 'user_id'); + } + + public function liked(User $user) + { + return (bool)PostLikes::where('post_id', $this->id)->where('user_id', $user->id)->count(); + } + + public function like(User $user) + { + + if (!$this->liked($user)) { + + $like = new PostLikes(); + $like->post_id = $this->id; + $like->user_id = $user->id; + $like->save(); + + } + } + + public function unlike(User $user) + { + if ($this->liked($user)) { + PostLikes::where('post_id', $this->id)->where('user_id', $user->id)->delete(); + } + } + +} \ No newline at end of file diff --git a/app/models/PostLikes.php b/app/models/PostLikes.php new file mode 100644 index 0000000..b2063c2 --- /dev/null +++ b/app/models/PostLikes.php @@ -0,0 +1,9 @@ + [ + 'username' => 'required|unique:users,username', + 'email' => 'required|email|unique:users,email', + 'password' => 'required|min:6', + ], + Validator::RULE_UPDATE => [], + ]; + + public static $messages = [ + 'username.required' => 'Informe um usuário', + 'username.unique' => 'Esse usuário já está sendo utilizado', + 'email.required' => 'Informe um e-mail', + 'email.email' => 'Informe um e-mail válido', + 'email.unique' => 'Esse e-mail já está sendo utilizado', + 'password.required' => 'Informe uma senha', + 'password.min' => 'Sua senha precisa ter no mínimo 6 caracteres', + ]; + + public function posts() + { + return $this->hasMany('Post', 'user_id', 'id'); + } + + public function followers() + { + return $this->belongsToMany('User', 'user_followers', 'user_followed_id', 'user_id'); + } + + public function following() + { + return $this->belongsToMany('User', 'user_followers', 'user_id', 'user_followed_id'); + } + + public function followed(User $user) + { + return (bool)UserFollowers::where('user_id', $this->id)->where('user_followed_id', $user->id)->count(); + } + + public function follow(User $user) + { + + if (!$this->followed($user)) { + + $follow = new UserFollowers(); + $follow->user_id = $this->id; + $follow->user_followed_id = $user->id; + $follow->save(); + + } + } + + public function unfollow(User $user) + { + if ($this->followed($user)) { + UserFollowers::where('user_id', $this->id)->where('user_followed_id', $user->id)->delete(); + } + } + + /** + * Get the unique identifier for the user. + * + * @return mixed + */ + public function getAuthIdentifier() + { + return $this->id; + } + + /** + * Get the password for the user. + * + * @return string + */ + public function getAuthPassword() + { + return $this->password; + } + + /** + * Get the token value for the "remember me" session. + * + * @return string + */ + public function getRememberToken() + { + // TODO: Implement getRememberToken() method. + } + + /** + * Set the token value for the "remember me" session. + * + * @param string $value + * @return void + */ + public function setRememberToken($value) + { + // TODO: Implement setRememberToken() method. + } + + /** + * Get the column name for the "remember me" token. + * + * @return string + */ + public function getRememberTokenName() + { + // TODO: Implement getRememberTokenName() method. + } + + +} \ No newline at end of file diff --git a/app/models/UserFollowers.php b/app/models/UserFollowers.php new file mode 100644 index 0000000..4c35b5b --- /dev/null +++ b/app/models/UserFollowers.php @@ -0,0 +1,10 @@ +add('index', new Route('/', ['_controller' => 'UserController::registerAction'])); +$collection->add('follow', new Route('/seguir/{username}', ['_controller' => 'UserController::followAction'])); +$collection->add('like', new Route('/curtir/{id}', ['_controller' => 'PhotoController::likeAction'])); + +$collection->add('logout', new Route('/sair', ['_controller' => 'UserController::logoutAction'])); +$collection->add('posts', new Route('/fotos/{username}', ['_controller' => 'PhotoController::listAction'])); +$collection->add('send-register', new Route('/enviar-cadastro', ['_controller' => 'UserController::sendRegisterAction', '_method' => 'POST'])); +$collection->add('login', new Route('/logar', ['_controller' => 'UserController::sendLoginAction', '_method' => 'POST'])); + +$collection->add('add-photo', new Route('/adicionar-foto', ['_controller' => 'PhotoController::addAction'])); +$collection->add('send-photo', new Route('/enviar-foto', ['_controller' => 'PhotoController::sendPhotoAction'])); + +$collection->add('perfil', new Route('/{username}', ['_controller' => 'UserController::perfilAction'])); + +return $collection; \ No newline at end of file diff --git a/app/samples/Facebook.php b/app/samples/Facebook.php deleted file mode 100644 index 5cae1f1..0000000 --- a/app/samples/Facebook.php +++ /dev/null @@ -1,19 +0,0 @@ - 'ADD_ID', - 'secret' => 'APP_SECRET', - 'cookie' => true, -)); - -$user = $facebook->getUser(); - -if ($user) { - try { - $user_profile = $facebook->api('/me'); - } catch (FacebookApiException $e) { - error_log($e); - $user = null; - } -} \ No newline at end of file diff --git a/app/samples/Mkt.php b/app/samples/Mkt.php deleted file mode 100644 index 49b6248..0000000 --- a/app/samples/Mkt.php +++ /dev/null @@ -1,10 +0,0 @@ - + + + + + + + + + InstaMkt + + + + + + + + + + + + +
+
+
+
+ +
+ InstaMkt +
+ + + +
+
+ + Sair +
+
+ + +
+
+
+
+ + +
+
+

+
+
+ +
+
+

+
+
+ + + + + + + diff --git a/app/views/photo/add.php b/app/views/photo/add.php new file mode 100644 index 0000000..84ea23f --- /dev/null +++ b/app/views/photo/add.php @@ -0,0 +1,24 @@ +
+
+
+
+

Adicionar foto

+
+ + + has('photo')): ?> +
first('photo'); ?>
+ +
+
+ + + has('description')): ?> +
first('description'); ?>
+ +
+
Cadastrar
+
+
+
+
\ No newline at end of file diff --git a/app/views/photo/list.php b/app/views/photo/list.php new file mode 100644 index 0000000..f4d2873 --- /dev/null +++ b/app/views/photo/list.php @@ -0,0 +1,38 @@ + +
+
+ + +
+
+

description; ?>

+ +
+ + + +
+ + + + \ No newline at end of file diff --git a/app/views/user/perfil.php b/app/views/user/perfil.php new file mode 100644 index 0000000..1bcc853 --- /dev/null +++ b/app/views/user/perfil.php @@ -0,0 +1,81 @@ + + +
+
+ +
+
+

username; ?>

+

+ about; ?> + + + + id != $user->id): ?> + followed($user); ?> +

+ +
+ + + +
+ Adicionar foto +
+ + + + + +

+ +
+
+ +
+
+
+ + posts->count()): ?> + +
+ +
+ +
+ +
+ + + +
+
+ Oppss... +
+

+ Nenhuma foto para exibição +

+
+ + + +
+
+
\ No newline at end of file diff --git a/app/views/user/register.php b/app/views/user/register.php new file mode 100644 index 0000000..378ef5a --- /dev/null +++ b/app/views/user/register.php @@ -0,0 +1,49 @@ + + +
+
+
+
+

Logar

+
+ + +
+
+ + +
+
Logar
+
+
+
+
+
+
+

Registrar

+
+ + + has('email')): ?> +
first('email'); ?>
+ +
+
+ + + has('username')): ?> +
first('username'); ?>
+ +
+
+ + + has('password')): ?> +
first('password'); ?>
+ +
+
Registrar
+
+
+
+
\ No newline at end of file diff --git a/composer.json b/composer.json index 10d474a..da85685 100644 --- a/composer.json +++ b/composer.json @@ -1,21 +1,32 @@ { - "name": "mktvirtual/TrabalheNaMktVirtual-BackEnd", - "description": "TrabalheNaMktVirtual-BackEnd", - "version": "0.0.1", - "authors": [ - { - "name": "Mkt Virtual", - "email": "mktvirtual@mktvirtual.com.br", - "role": "Developer" - } - ], - "require": { - "facebook/php-sdk": "3.2.*", - "EHER/PHPUnit": ">=1.2" - }, - "autoload": { - "classmap": [ - "app/" - ] - } + "name": "skape/insta-mkt", + "authors": [ + { + "name": "Renato Neto", + "email": "skapemr@gmail.com" + } + ], + "require": { + "illuminate/database": "4.2.*", + "illuminate/config": "4.2.*", + "illuminate/auth": "4.2.*", + "illuminate/validation": "4.2.*", + "symfony/routing": "2.5", + "symfony/config": "2.5", + "symfony/templating": "2.5", + "symfony/http-kernel": "2.5", + "symfony/http-foundation": "2.5", + "forxer/gravatar": "dev-master", + "intervention/image": "2.*" + }, + "autoload": { + "classmap": [ + "app/controllers", + "app/models" + ], + "psr-0": { + "Skp": "library/" + }, + "files": ["library/Skp/Support/helpers.php"] + } } diff --git a/composer.lock b/composer.lock index c424067..bfa7734 100644 --- a/composer.lock +++ b/composer.lock @@ -1,112 +1,1375 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" + "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" ], - "hash": "a003939b9d1511674af0806407ec0968", + "hash": "5a396b0dad841798c257c04d1f164e8f", "packages": [ { - "name": "eher/phpunit", - "version": "1.6", + "name": "forxer/gravatar", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/EHER/phpunit-all-in-one", - "reference": "1.6" + "url": "https://github.com/forxer/gravatar.git", + "reference": "9bb46b8bad661aa978d50a7415af1d0f79975188" }, "dist": { "type": "zip", - "url": "https://github.com/EHER/phpunit-all-in-one/zipball/1.6", - "reference": "1.6", + "url": "https://api.github.com/repos/forxer/gravatar/zipball/9bb46b8bad661aa978d50a7415af1d0f79975188", + "reference": "9bb46b8bad661aa978d50a7415af1d0f79975188", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/finder": "*" + "php": ">=5.4.0" }, - "bin": [ - "bin/dbunit", - "bin/phpcov", - "bin/phpcpd", - "bin/phpdcd", - "bin/phploc", - "bin/phpunit", - "bin/phpunit-skelgen" + "type": "library", + "autoload": { + "psr-4": { + "forxer\\Gravatar\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vincent Garnier", + "email": "contact@okatea.org" + } + ], + "description": "A library providing easy gravatar integration.", + "keywords": [ + "gravatar" + ], + "time": "2014-08-22 17:33:45" + }, + { + "name": "illuminate/auth", + "version": "v4.2.9", + "target-dir": "Illuminate/Auth", + "source": { + "type": "git", + "url": "https://github.com/illuminate/auth.git", + "reference": "ed7f3c37b00ec7fc887b78ba35f36862803f4abb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/auth/zipball/ed7f3c37b00ec7fc887b78ba35f36862803f4abb", + "reference": "ed7f3c37b00ec7fc887b78ba35f36862803f4abb", + "shasum": "" + }, + "require": { + "illuminate/cookie": "4.2.*", + "illuminate/encryption": "4.2.*", + "illuminate/events": "4.2.*", + "illuminate/hashing": "4.2.*", + "illuminate/http": "4.2.*", + "illuminate/session": "4.2.*", + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/console": "4.2.*", + "illuminate/routing": "4.2.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Auth": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-08 20:11:02" + }, + { + "name": "illuminate/cache", + "version": "v4.2.9", + "target-dir": "Illuminate/Cache", + "source": { + "type": "git", + "url": "https://github.com/illuminate/cache.git", + "reference": "3fd8deccb023561d39651e8ad00af725c2bd4811" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/cache/zipball/3fd8deccb023561d39651e8ad00af725c2bd4811", + "reference": "3fd8deccb023561d39651e8ad00af725c2bd4811", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/database": "4.2.*", + "illuminate/encryption": "4.2.*", + "illuminate/filesystem": "4.2.*", + "illuminate/redis": "4.2.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Cache": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-10 16:29:36" + }, + { + "name": "illuminate/config", + "version": "v4.2.9", + "target-dir": "Illuminate/Config", + "source": { + "type": "git", + "url": "https://github.com/illuminate/config.git", + "reference": "811117b696b6cbc3c7974ffd615ece3d19e0d322" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/config/zipball/811117b696b6cbc3c7974ffd615ece3d19e0d322", + "reference": "811117b696b6cbc3c7974ffd615ece3d19e0d322", + "shasum": "" + }, + "require": { + "illuminate/filesystem": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Config": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-11 01:18:00" + }, + { + "name": "illuminate/container", + "version": "v4.2.9", + "target-dir": "Illuminate/Container", + "source": { + "type": "git", + "url": "https://github.com/illuminate/container.git", + "reference": "5c43bd3bd5eea2ed2061cd0dd57d72404aceb978" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/container/zipball/5c43bd3bd5eea2ed2061cd0dd57d72404aceb978", + "reference": "5c43bd3bd5eea2ed2061cd0dd57d72404aceb978", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Container": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-11 19:02:16" + }, + { + "name": "illuminate/cookie", + "version": "v4.2.9", + "target-dir": "Illuminate/Cookie", + "source": { + "type": "git", + "url": "https://github.com/illuminate/cookie.git", + "reference": "17d70ef8ea1561e910cb67043db09753ff4feb86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/cookie/zipball/17d70ef8ea1561e910cb67043db09753ff4feb86", + "reference": "17d70ef8ea1561e910cb67043db09753ff4feb86", + "shasum": "" + }, + "require": { + "illuminate/encryption": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/http-foundation": "2.5.*", + "symfony/http-kernel": "2.5.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Cookie": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-08-07 11:28:31" + }, + { + "name": "illuminate/database", + "version": "v4.2.9", + "target-dir": "Illuminate/Database", + "source": { + "type": "git", + "url": "https://github.com/illuminate/database.git", + "reference": "b66a7173ca6a81de3b2ccbd84372bee8624215f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/database/zipball/b66a7173ca6a81de3b2ccbd84372bee8624215f1", + "reference": "b66a7173ca6a81de3b2ccbd84372bee8624215f1", + "shasum": "" + }, + "require": { + "illuminate/container": "4.2.*", + "illuminate/events": "4.2.*", + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/cache": "4.2.*", + "illuminate/console": "4.2.*", + "illuminate/filesystem": "4.2.*", + "illuminate/pagination": "4.2.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Database": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "keywords": [ + "database", + "laravel", + "orm", + "sql" + ], + "time": "2014-09-11 14:10:29" + }, + { + "name": "illuminate/encryption", + "version": "v4.2.9", + "target-dir": "Illuminate/Encryption", + "source": { + "type": "git", + "url": "https://github.com/illuminate/encryption.git", + "reference": "4be63e614095d73996d9580a292f30bb436b3470" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/encryption/zipball/4be63e614095d73996d9580a292f30bb436b3470", + "reference": "4be63e614095d73996d9580a292f30bb436b3470", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/security-core": "2.5.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Encryption": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-08-10 10:16:38" + }, + { + "name": "illuminate/events", + "version": "v4.2.9", + "target-dir": "Illuminate/Events", + "source": { + "type": "git", + "url": "https://github.com/illuminate/events.git", + "reference": "19f93bcd692a52b39f1bd125f6f112eda0c1b8b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/events/zipball/19f93bcd692a52b39f1bd125f6f112eda0c1b8b0", + "reference": "19f93bcd692a52b39f1bd125f6f112eda0c1b8b0", + "shasum": "" + }, + "require": { + "illuminate/container": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Events": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-08-17 14:08:00" + }, + { + "name": "illuminate/filesystem", + "version": "v4.2.9", + "target-dir": "Illuminate/Filesystem", + "source": { + "type": "git", + "url": "https://github.com/illuminate/filesystem.git", + "reference": "501dc63c876ec0e0634ddb596890faec9d2f71e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/filesystem/zipball/501dc63c876ec0e0634ddb596890faec9d2f71e4", + "reference": "501dc63c876ec0e0634ddb596890faec9d2f71e4", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/finder": "2.5.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Filesystem": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-08-10 10:16:38" + }, + { + "name": "illuminate/hashing", + "version": "v4.2.9", + "target-dir": "Illuminate/Hashing", + "source": { + "type": "git", + "url": "https://github.com/illuminate/hashing.git", + "reference": "4622c13c31789f04c65974d30212198b04730f93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/hashing/zipball/4622c13c31789f04c65974d30212198b04730f93", + "reference": "4622c13c31789f04c65974d30212198b04730f93", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "ircmaxell/password-compat": "~1.0", + "php": ">=5.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Hashing": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-05-23 16:40:19" + }, + { + "name": "illuminate/http", + "version": "v4.2.9", + "target-dir": "Illuminate/Http", + "source": { + "type": "git", + "url": "https://github.com/illuminate/http.git", + "reference": "34a3012bf8f502ac38c7f1c012366dc4f62d1a49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/http/zipball/34a3012bf8f502ac38c7f1c012366dc4f62d1a49", + "reference": "34a3012bf8f502ac38c7f1c012366dc4f62d1a49", + "shasum": "" + }, + "require": { + "illuminate/session": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/http-foundation": "2.5.*", + "symfony/http-kernel": "2.5.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Http": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-10 14:59:29" + }, + { + "name": "illuminate/session", + "version": "v4.2.9", + "target-dir": "Illuminate/Session", + "source": { + "type": "git", + "url": "https://github.com/illuminate/session.git", + "reference": "bef2293b13cfbd85d82fcb053f592b2a889c1734" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/session/zipball/bef2293b13cfbd85d82fcb053f592b2a889c1734", + "reference": "bef2293b13cfbd85d82fcb053f592b2a889c1734", + "shasum": "" + }, + "require": { + "illuminate/cache": "4.2.*", + "illuminate/cookie": "4.2.*", + "illuminate/encryption": "4.2.*", + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0", + "symfony/finder": "2.5.*", + "symfony/http-foundation": "2.5.*" + }, + "require-dev": { + "illuminate/console": "4.2.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Session": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-10 16:44:17" + }, + { + "name": "illuminate/support", + "version": "v4.2.9", + "target-dir": "Illuminate/Support", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "b6716d34afce6e69523725f2534a5c3a54dba964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/b6716d34afce6e69523725f2534a5c3a54dba964", + "reference": "b6716d34afce6e69523725f2534a5c3a54dba964", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "jeremeamia/superclosure": "~1.0", + "patchwork/utf8": "1.1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Support": "" + }, + "files": [ + "Illuminate/Support/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-12 21:42:43" + }, + { + "name": "illuminate/validation", + "version": "v4.2.9", + "target-dir": "Illuminate/Validation", + "source": { + "type": "git", + "url": "https://github.com/illuminate/validation.git", + "reference": "f1dd817fbc6c4ade2b1717263413ecf8419c0df1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/validation/zipball/f1dd817fbc6c4ade2b1717263413ecf8419c0df1", + "reference": "f1dd817fbc6c4ade2b1717263413ecf8419c0df1", + "shasum": "" + }, + "require": { + "illuminate/container": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/http-foundation": "2.5.*", + "symfony/translation": "2.5.*" + }, + "require-dev": { + "illuminate/database": "4.2.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-0": { + "Illuminate\\Validation": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "time": "2014-09-12 21:59:39" + }, + { + "name": "intervention/image", + "version": "2.0.11", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "da8477b9cc59499ffebc148bf95d8e680ae1726f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/da8477b9cc59499ffebc148bf95d8e680ae1726f", + "reference": "da8477b9cc59499ffebc148bf95d8e680ae1726f", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "3.*" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@olivervogel.net", + "homepage": "http://olivervogel.net/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "time": "2014-09-25 16:51:21" + }, + { + "name": "ircmaxell/password-compat", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/ircmaxell/password_compat.git", + "reference": "1fc1521b5e9794ea77e4eca30717be9635f1d4f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/1fc1521b5e9794ea77e4eca30717be9635f1d4f4", + "reference": "1fc1521b5e9794ea77e4eca30717be9635f1d4f4", + "shasum": "" + }, + "type": "library", + "autoload": { + "files": [ + "lib/password.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@ircmaxell.com", + "homepage": "http://blog.ircmaxell.com" + } + ], + "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", + "homepage": "https://github.com/ircmaxell/password_compat", + "keywords": [ + "hashing", + "password" + ], + "time": "2013-04-30 19:58:08" + }, + { + "name": "nesbot/carbon", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "5cb6e71055f7b0b57956b73d324cc4de31278f42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/5cb6e71055f7b0b57956b73d324cc4de31278f42", + "reference": "5cb6e71055f7b0b57956b73d324cc4de31278f42", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Carbon": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "https://github.com/briannesbitt/Carbon", + "keywords": [ + "date", + "datetime", + "time" + ], + "time": "2014-09-26 02:52:02" + }, + { + "name": "psr/log", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2012-12-21 11:40:51" + }, + { + "name": "symfony/config", + "version": "v2.5.0", + "target-dir": "Symfony/Component/Config", + "source": { + "type": "git", + "url": "https://github.com/symfony/Config.git", + "reference": "9c8caadb38ecc69ac35ab31af4d1996944b5a09f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Config/zipball/9c8caadb38ecc69ac35ab31af4d1996944b5a09f", + "reference": "9c8caadb38ecc69ac35ab31af4d1996944b5a09f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/filesystem": "~2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Config\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "http://symfony.com", + "time": "2014-04-22 08:11:23" + }, + { + "name": "symfony/debug", + "version": "v2.5.5", + "target-dir": "Symfony/Component/Debug", + "source": { + "type": "git", + "url": "https://github.com/symfony/Debug.git", + "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Debug/zipball/4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", + "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/http-foundation": "~2.1", + "symfony/http-kernel": "~2.1" + }, + "suggest": { + "symfony/http-foundation": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Debug\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Debug Component", + "homepage": "http://symfony.com", + "time": "2014-09-28 15:22:14" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.5.5", + "target-dir": "Symfony/Component/EventDispatcher", + "source": { + "type": "git", + "url": "https://github.com/symfony/EventDispatcher.git", + "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/f6281337bf5f985f585d1db6a83adb05ce531f46", + "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0", + "symfony/dependency-injection": "~2.0,<2.6.0", + "symfony/stopwatch": "~2.2" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "http://symfony.com", + "time": "2014-09-28 15:56:11" + }, + { + "name": "symfony/filesystem", + "version": "v2.5.5", + "target-dir": "Symfony/Component/Filesystem", + "source": { + "type": "git", + "url": "https://github.com/symfony/Filesystem.git", + "reference": "4e62fab0060a826561c78b665925b37c870c45f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/4e62fab0060a826561c78b665925b37c870c45f5", + "reference": "4e62fab0060a826561c78b665925b37c870c45f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Filesystem\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } ], + "description": "Symfony Filesystem Component", + "homepage": "http://symfony.com", + "time": "2014-09-22 09:14:18" + }, + { + "name": "symfony/finder", + "version": "v2.5.5", + "target-dir": "Symfony/Component/Finder", + "source": { + "type": "git", + "url": "https://github.com/symfony/Finder.git", + "reference": "d5033742b9a6206ef6d06e813870bca18e9205df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Finder/zipball/d5033742b9a6206ef6d06e813870bca18e9205df", + "reference": "d5033742b9a6206ef6d06e813870bca18e9205df", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Finder\\": "" + } + }, "notification-url": "https://packagist.org/downloads/", - "description": "Unofficial version of PHPUnit to be handled with Composer.", - "time": "2012-05-23 18:46:24" + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Finder Component", + "homepage": "http://symfony.com", + "time": "2014-09-27 08:35:39" }, { - "name": "facebook/php-sdk", - "version": "v3.2.2", + "name": "symfony/http-foundation", + "version": "v2.5.0", + "target-dir": "Symfony/Component/HttpFoundation", "source": { "type": "git", - "url": "https://github.com/facebook/facebook-php-sdk.git", - "reference": "v3.2.2" + "url": "https://github.com/symfony/HttpFoundation.git", + "reference": "044085422005aa3258fb3f710a7bf0202011f259" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/facebook-php-sdk/zipball/v3.2.2", - "reference": "v3.2.2", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/044085422005aa3258fb3f710a7bf0202011f259", + "reference": "044085422005aa3258fb3f710a7bf0202011f259", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=5.2.0" + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/expression-language": "~2.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, "autoload": { + "psr-0": { + "Symfony\\Component\\HttpFoundation\\": "" + }, "classmap": [ - "src" + "Symfony/Component/HttpFoundation/Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "http://symfony.com", + "time": "2014-05-26 19:02:40" + }, + { + "name": "symfony/http-kernel", + "version": "v2.5.0", + "target-dir": "Symfony/Component/HttpKernel", + "source": { + "type": "git", + "url": "https://github.com/symfony/HttpKernel.git", + "reference": "432a828e796a575d4a325a0fdf14132a615d2c53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/432a828e796a575d4a325a0fdf14132a615d2c53", + "reference": "432a828e796a575d4a325a0fdf14132a615d2c53", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "psr/log": "~1.0", + "symfony/debug": "~2.5", + "symfony/event-dispatcher": "~2.1", + "symfony/http-foundation": "~2.4" + }, + "require-dev": { + "symfony/browser-kit": "~2.2", + "symfony/class-loader": "~2.1", + "symfony/config": "~2.0", + "symfony/console": "~2.2", + "symfony/dependency-injection": "~2.0", + "symfony/finder": "~2.0", + "symfony/process": "~2.0", + "symfony/routing": "~2.2", + "symfony/stopwatch": "~2.2", + "symfony/templating": "~2.2" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/class-loader": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\HttpKernel\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "http://symfony.com", + "time": "2014-05-31 18:45:50" + }, + { + "name": "symfony/routing", + "version": "v2.5.0", + "target-dir": "Symfony/Component/Routing", + "source": { + "type": "git", + "url": "https://github.com/symfony/Routing.git", + "reference": "99b4e8e2978e6a08c086fd771cc0aa66c9e80a56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Routing/zipball/99b4e8e2978e6a08c086fd771cc0aa66c9e80a56", + "reference": "99b4e8e2978e6a08c086fd771cc0aa66c9e80a56", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/yaml": "~2.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Routing\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], "authors": [ { - "name": "Facebook", - "homepage": "https://github.com/facebook/facebook-php-sdk/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" } ], - "description": "Facebook PHP SDK", - "homepage": "https://github.com/facebook/facebook-php-sdk", + "description": "Symfony Routing Component", + "homepage": "http://symfony.com", "keywords": [ - "facebook", - "sdk" + "router", + "routing", + "uri", + "url" ], - "time": "2013-01-15 21:37:15" + "time": "2014-04-23 14:08:54" }, { - "name": "symfony/finder", - "version": "v2.2.1", - "target-dir": "Symfony/Component/Finder", + "name": "symfony/security-core", + "version": "v2.5.5", + "target-dir": "Symfony/Component/Security/Core", "source": { "type": "git", - "url": "https://github.com/symfony/Finder.git", - "reference": "v2.2.1" + "url": "https://github.com/symfony/security-core.git", + "reference": "fc79ba84f7db4a11d8313c87e8845096278d4144" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/v2.2.1", - "reference": "v2.2.1", + "url": "https://api.github.com/repos/symfony/security-core/zipball/fc79ba84f7db4a11d8313c87e8845096278d4144", + "reference": "fc79ba84f7db4a11d8313c87e8845096278d4144", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "require-dev": { + "ircmaxell/password-compat": "1.0.*", + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.4", + "symfony/validator": "~2.5" + }, + "suggest": { + "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/validator": "For using the user password constraint" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.5-dev" } }, "autoload": { "psr-0": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\Security\\Core\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -114,18 +1377,129 @@ "MIT" ], "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + } + ], + "description": "Symfony Security Component - Core Library", + "homepage": "http://symfony.com", + "time": "2014-09-28 15:22:14" + }, + { + "name": "symfony/templating", + "version": "v2.5.0", + "target-dir": "Symfony/Component/Templating", + "source": { + "type": "git", + "url": "https://github.com/symfony/Templating.git", + "reference": "782802d7a72ba9b1dd72dc98a69a5b3768fc18d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Templating/zipball/782802d7a72ba9b1dd72dc98a69a5b3768fc18d0", + "reference": "782802d7a72ba9b1dd72dc98a69a5b3768fc18d0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "psr/log": "~1.0" + }, + "suggest": { + "psr/log": "For using debug logging in loaders" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Templating\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Symfony Templating Component", + "homepage": "http://symfony.com", + "time": "2014-04-18 19:44:02" + }, + { + "name": "symfony/translation", + "version": "v2.5.5", + "target-dir": "Symfony/Component/Translation", + "source": { + "type": "git", + "url": "https://github.com/symfony/Translation.git", + "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Translation/zipball/170c0d895616e1a6a35681ffb0b9e339f58ab928", + "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/config": "~2.0", + "symfony/intl": "~2.3", + "symfony/yaml": "~2.2" + }, + "suggest": { + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Translation Component", "homepage": "http://symfony.com", - "time": "2013-04-01 07:51:50" + "time": "2014-09-23 05:25:11" } ], "packages-dev": [ @@ -135,9 +1509,10 @@ ], "minimum-stability": "stable", - "stability-flags": [ - - ], + "stability-flags": { + "forxer/gravatar": 20 + }, + "prefer-stable": false, "platform": [ ], diff --git a/estrutura.sql b/estrutura.sql new file mode 100644 index 0000000..cba2e5d --- /dev/null +++ b/estrutura.sql @@ -0,0 +1,126 @@ +/* + +SQLyog Ultimate v8.55 +MySQL - 5.5.24-log : Database - insta_mkt + +********************************************************************* + +*/ + + + +/*!40101 SET NAMES utf8 */; + + + +/*!40101 SET SQL_MODE=''*/; + + + +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; + +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; + +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; + +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +/*Table structure for table `post_comments` */ + + + +CREATE TABLE `post_comments` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `post_id` int(11) NOT NULL, + `comment` varchar(140) COLLATE utf8_unicode_ci NOT NULL, + `created_at` datetime NOT NULL, + `updated_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `FK_post_comments_user` (`user_id`), + KEY `FK_post_comments_post` (`post_id`), + CONSTRAINT `FK_post_comments_post` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE, + CONSTRAINT `FK_post_comments_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + + + +/*Table structure for table `post_likes` */ + + + +CREATE TABLE `post_likes` ( + `post_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + PRIMARY KEY (`post_id`,`user_id`), + KEY `FK_post_likes_user` (`user_id`), + CONSTRAINT `FK_post_likes_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `FK_post_likes_post` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + + + +/*Table structure for table `posts` */ + + + +CREATE TABLE `posts` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `name` text COLLATE utf8_unicode_ci, + `description` varchar(140) COLLATE utf8_unicode_ci DEFAULT NULL, + `created_at` datetime NOT NULL, + `updated_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `FK_posts_user` (`user_id`), + CONSTRAINT `FK_posts_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + + + +/*Table structure for table `user_followers` */ + + + +CREATE TABLE `user_followers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `user_followed_id` int(11) NOT NULL, + PRIMARY KEY (`user_id`,`user_followed_id`), + UNIQUE KEY `id` (`id`), + KEY `FK_user_followers_followed` (`user_followed_id`), + CONSTRAINT `FK_user_followers_followed` FOREIGN KEY (`user_followed_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `FK_user_followers_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + + + +/*Table structure for table `users` */ + + + +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `password` text COLLATE utf8_unicode_ci NOT NULL, + `email` varchar(150) COLLATE utf8_unicode_ci NOT NULL, + `about` text COLLATE utf8_unicode_ci, + `confirmation_code` char(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `confirmed_at` datetime DEFAULT NULL, + `confirmed` tinyint(1) NOT NULL DEFAULT '0', + `created_at` datetime NOT NULL, + `updated_at` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `NewIndex1` (`username`,`email`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + + + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; + +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; + +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; + +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + diff --git a/library/Skp/Auth/AuthPlugin.php b/library/Skp/Auth/AuthPlugin.php new file mode 100644 index 0000000..fbade5a --- /dev/null +++ b/library/Skp/Auth/AuthPlugin.php @@ -0,0 +1,26 @@ +check()) { + Registry::set('loggedUser', $guard->user()); + } + } + +} \ No newline at end of file diff --git a/library/Skp/Auth/Guard.php b/library/Skp/Auth/Guard.php new file mode 100644 index 0000000..f0d73dd --- /dev/null +++ b/library/Skp/Auth/Guard.php @@ -0,0 +1,161 @@ +provider = $provider; + } + + /** + * Determine if the current user is authenticated. + * + * @return bool + */ + public function check() + { + return ! is_null($this->user()); + } + + /** + * Determine if the current user is a guest. + * + * @return bool + */ + public function guest() + { + return !$this->check(); + } + + /** + * Get the currently authenticated user. + * + * @return \Illuminate\Auth\UserInterface|null + */ + public function user() + { + if ($this->loggedOut) { + return; + } + + if (!is_null($this->user)) { + return $this->user; + } + + $id = (isset($_SESSION[$this->getName()])) ? $_SESSION[$this->getName()] : null; + + $user = null; + + if (!is_null($id)) { + $user = $this->provider->retrieveByID($id); + } + + return $this->user = $user; + } + + /** + * Attempt to authenticate a user using the given credentials. + * + * @param array $credentials + * @param bool $remember + * @param bool $login + * @return bool + */ + public function attempt(array $credentials = array(), $login = true) + { + $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials); + + // If an implementation of UserInterface was returned, we'll ask the provider + // to validate the user against the given credentials, and if they are in + // fact valid we'll log the users into the application and return true. + if ($this->hasValidCredentials($user, $credentials)) { + if ($login) { + $this->login($user); + } + + return true; + } + + return false; + } + + /** + * Determine if the user matches the credentials. + * + * @param mixed $user + * @param array $credentials + * @return bool + */ + protected function hasValidCredentials($user, $credentials) + { + return !is_null($user) && $this->provider->validateCredentials($user, $credentials); + } + + public function login(UserInterface $user) + { + $this->updateSession($user->getAuthIdentifier()); + + $this->setUser($user); + } + + /** + * Log the user out of the application. + * + * @return void + */ + public function logout() + { + $this->clearUserDataFromStorage(); + + $this->user = null; + $this->loggedOut = true; + } + + protected function clearUserDataFromStorage() + { + unset($_SESSION[$this->getName()]); + } + + public function setUser(UserInterface $user) + { + $this->user = $user; + + $this->loggedOut = false; + } + + /** + * Update the session with the given ID. + * + * @param string $id + * @return void + */ + protected function updateSession($id) + { + $_SESSION[$this->getName()] = $id; + } + + /** + * Get a unique identifier for the auth session value. + * + * @return string + */ + public function getName() + { + return 'login_' . md5(get_class($this)); + } + +} \ No newline at end of file diff --git a/library/Skp/Auth/UserInterface.php b/library/Skp/Auth/UserInterface.php new file mode 100644 index 0000000..4b5d092 --- /dev/null +++ b/library/Skp/Auth/UserInterface.php @@ -0,0 +1,24 @@ +attributes->get('_controller')) { + return false; + } + + if (is_array($controller)) { + return $controller; + } + + if (is_object($controller)) { + if (method_exists($controller, '__invoke')) { + return $controller; + } + + throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', get_class($controller), $request->getPathInfo())); + } + + if (false === strpos($controller, ':')) { + if (method_exists($controller, '__invoke')) { + $controller = new $controller(); + $controller->setRequest($request); + + return new $controller(); + } elseif (function_exists($controller)) { + return $controller; + } + } + + $callable = $this->createController($controller); + + if (!is_callable([$callable[0], $callable[1]])) { + throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', $controller, $request->getPathInfo())); + } + + $callable[0]->setRequest($request); + + return $callable; + } + + + +} \ No newline at end of file diff --git a/library/Skp/Database/EloquentPlugin.php b/library/Skp/Database/EloquentPlugin.php new file mode 100644 index 0000000..df24f6b --- /dev/null +++ b/library/Skp/Database/EloquentPlugin.php @@ -0,0 +1,36 @@ +make(array( + 'host' => $config['database']['host'], + 'database' => $config['database']['database'], + 'username' => $config['database']['username'], + 'password' => $config['database']['password'], + 'collation' => 'utf8_general_ci', + 'driver' => 'mysql', + 'prefix' => '', + 'charset' => 'utf8', + )); + + $resolver = new ConnectionResolver(['default' => $connection]); + $resolver->setDefaultConnection('default'); + Model::setConnectionResolver($resolver); + } + +} \ No newline at end of file diff --git a/library/Skp/Foundation/Application.php b/library/Skp/Foundation/Application.php new file mode 100644 index 0000000..e823ccc --- /dev/null +++ b/library/Skp/Foundation/Application.php @@ -0,0 +1,99 @@ +loadConfigs(); + $this->loadPlugins(); + } + + public function run(Request $request = null) + { + $this->setRequest(($request === null) ? $this->createNewRequest() : $request); + $this->loadRoutes(); + + $dispatcher = new Dispatcher($this); + + return $dispatcher->dispatch(); + } + + public function setRequest(Request $request) + { + $this->request = $request; + } + + /** + * @return Request + */ + public function getRequest() + { + return $this->request; + } + + public function getRoutes() + { + return $this->routes; + } + + protected function createNewRequest() + { + return Request::createFromGlobals(); + } + + protected function loadRoutes() + { + $locator = new FileLocator([APP_PATH]); + $loader = new PhpFileLoader($locator); + + $this->routes = $loader->load('routes.php'); + } + + protected function loadConfigs() + { + // @todo carregamento auto dos arquivos de config... + $configs = ['database', 'plugins', 'app']; + + $loader = new FileLoader(new Filesystem(), APP_PATH . 'config'); + $loadedConfigs = []; + + foreach ($configs as $config) { + $loadedConfigs[$config] = (!isset($loadedConfigs[$config])) ? [] : $loadedConfigs[$config]; + $loadedConfigs[$config] = array_merge($loadedConfigs[$config], $loader->load(APPLICATION_ENV, $config)); + } + + Registry::set('Config', $loadedConfigs); + } + + protected function loadPlugins() + { + $config = \Skp\Registry::get('Config'); + + foreach ($config['plugins'] as $plugin => $class) { + $obj = new $class($this); + $obj->register(); + } + } + +} \ No newline at end of file diff --git a/library/Skp/Foundation/Controller.php b/library/Skp/Foundation/Controller.php new file mode 100644 index 0000000..c1ca2d3 --- /dev/null +++ b/library/Skp/Foundation/Controller.php @@ -0,0 +1,57 @@ +request = $request; + } + + public function render($name, array $params) + { + $engine = $this->getViewEngine(); + + $content = $engine->render($name, $params); + + if (!empty($this->layout)) { + $content = $engine->render($this->layout, array_merge(['content' => $content], $params)); + } + + return $content; + } + + public function setViewEngine(EngineInterface $engine) + { + $this->viewEngine = $engine; + } + + public function getViewEngine() + { + if (!$this->viewEngine) { + $this->viewEngine = new PhpEngine( + new TemplateNameParser(), + new FilesystemLoader(APP_PATH . 'views/%name%') + ); + } + + return $this->viewEngine; + } + +} \ No newline at end of file diff --git a/library/Skp/Model.php b/library/Skp/Model.php new file mode 100644 index 0000000..85b4345 --- /dev/null +++ b/library/Skp/Model.php @@ -0,0 +1,30 @@ +setDefaultConnection('default'); + $factory = new Illuminate\Database\Connectors\ConnectionFactory(new Illuminate\Container\Container()); + $connection = $factory->make(array( + 'host' => 'localhost', + 'database' => 'insta_mkt', + 'username' => 'root', + 'password' => '', + 'collation' => 'utf8_general_ci', + 'driver' => 'mysql', + 'prefix' => '', + 'charset' => 'utf8', + )); + + $resolver->addConnection('default', $connection); + Illuminate\Database\Eloquent\Model::setConnectionResolver($resolver); + } + +} \ No newline at end of file diff --git a/library/Skp/Plugin/PluginAbstract.php b/library/Skp/Plugin/PluginAbstract.php new file mode 100644 index 0000000..c298915 --- /dev/null +++ b/library/Skp/Plugin/PluginAbstract.php @@ -0,0 +1,18 @@ +application = $app; + } + + abstract public function register(); + +} \ No newline at end of file diff --git a/library/Skp/Registry.php b/library/Skp/Registry.php new file mode 100644 index 0000000..1528cb6 --- /dev/null +++ b/library/Skp/Registry.php @@ -0,0 +1,19 @@ +application = $app; + } + + public function dispatch() + { + $matcher = new UrlMatcher($this->application->getRoutes(), new RequestContext()); + + $dispatcher = new EventDispatcher(); + $dispatcher->addSubscriber(new RouterListener($matcher)); + + $resolver = new ControllerResolver(); + $kernel = new HttpKernel($dispatcher, $resolver); + + $response = $kernel->handle($this->application->getRequest()); + $response->send(); + + $kernel->terminate($this->application->getRequest(), $response); + } + +} \ No newline at end of file diff --git a/library/Skp/Support/helpers.php b/library/Skp/Support/helpers.php new file mode 100644 index 0000000..786f304 --- /dev/null +++ b/library/Skp/Support/helpers.php @@ -0,0 +1,6 @@ +check(); +} \ No newline at end of file diff --git a/library/Skp/Validation/Validator.php b/library/Skp/Validation/Validator.php new file mode 100644 index 0000000..3f6f0b9 --- /dev/null +++ b/library/Skp/Validation/Validator.php @@ -0,0 +1,32 @@ +setPresenceVerifier(new DatabasePresenceVerifier(Model::getConnectionResolver())); + + return $validator; + } + +} \ No newline at end of file diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index 408eba4..0000000 --- a/phpunit.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - tests - - - \ No newline at end of file diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..77827ae --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,15 @@ + + + Options -MultiViews + + + RewriteEngine On + + # Redirect Trailing Slashes... + RewriteRule ^(.*)/$ /$1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/css/semantic.min.css b/public/css/semantic.min.css new file mode 100644 index 0000000..4cbc92d --- /dev/null +++ b/public/css/semantic.min.css @@ -0,0 +1,14 @@ +/* +* # Semantic UI +* Version: 0.19.3 +* http://github.com/jlukic/semantic-ui +* +* +* Copyright 2014 Contributors +* Released under the MIT license +* http://opensource.org/licenses/MIT +* +* Released: 09/20/2014 +*/ + +.ui.breadcrumb{margin:1em 0;display:inline-block;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.5;margin:0 .15em;font-size:1em;color:rgba(0,0,0,.3)}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.5em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.small.breadcrumb{font-size:.75em}.ui.large.breadcrumb{font-size:1.1em}.ui.huge.breadcrumb{font-size:1.3em}.ui.form{position:relative;max-width:100%}.ui.form :first-child{margin-top:0}.ui.form :last-child{margin-bottom:0}.ui.form>p{margin:1em 0}.ui.form .field{clear:both;margin:0 0 1em}.ui.form .field>label{margin:0 0 .3em;display:block;color:#555;font-size:.875em}.ui.form .ui.input,.ui.form input[type=color],.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=datetime],.ui.form input[type=email],.ui.form input[type=month],.ui.form input[type=number],.ui.form input[type=password],.ui.form input[type=range],.ui.form input[type=search],.ui.form input[type=tel],.ui.form input[type=text],.ui.form input[type=time],.ui.form input[type=url],.ui.form input[type=week],.ui.form textarea{width:100%}.ui.form input[type=color],.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=datetime],.ui.form input[type=email],.ui.form input[type=month],.ui.form input[type=number],.ui.form input[type=password],.ui.form input[type=search],.ui.form input[type=tel],.ui.form input[type=text],.ui.form input[type=time],.ui.form input[type=url],.ui.form input[type=week],.ui.form textarea{margin:0;padding:.65em 1em;font-size:1em;background-color:#FFF;border:1px solid rgba(0,0,0,.15);outline:0;color:rgba(0,0,0,.7);border-radius:.3125em;-webkit-transition:background-color .3s ease-out,-webkit-box-shadow .2s ease,border-color .2s ease;-moz-transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease;transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease;-webkit-box-shadow:0 0 rgba(0,0,0,.3) inset;box-shadow:0 0 rgba(0,0,0,.3) inset;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.form textarea,.ui.textarea{line-height:1.33;min-height:8em;height:12em;max-height:24em;resize:vertical}.ui.form input[type=checkbox],.ui.form textarea{vertical-align:top}.ui.form .divider{clear:both;margin:1em 0}.ui.form .error.message,.ui.form .info.message,.ui.form .warning.message{display:none}.ui.form .message:first-child{margin-top:0}.ui.form .field .prompt.label{white-space:nowrap}.ui.form .inline.field .prompt{margin-top:0;margin-left:1em}.ui.form .inline.field .prompt:before{margin-top:-.3em;bottom:auto;right:auto;top:50%;left:0}.ui.form input[type=color]:focus,.ui.form input[type=date]:focus,.ui.form input[type=datetime-local]:focus,.ui.form input[type=datetime]:focus,.ui.form input[type=email]:focus,.ui.form input[type=month]:focus,.ui.form input[type=number]:focus,.ui.form input[type=password]:focus,.ui.form input[type=search]:focus,.ui.form input[type=tel]:focus,.ui.form input[type=text]:focus,.ui.form input[type=time]:focus,.ui.form input[type=url]:focus,.ui.form input[type=week]:focus .ui.form textarea:focus{color:rgba(0,0,0,.85);border-color:rgba(0,0,0,.2);border-bottom-left-radius:0;border-top-left-radius:0;-webkit-appearance:none;-webkit-box-shadow:.3em 0 0 0 rgba(0,0,0,.2) inset;box-shadow:.3em 0 0 0 rgba(0,0,0,.2) inset}.ui.form.error .error.message,.ui.form.warning .warning.message{display:block}.ui.form .field.error .input,.ui.form .field.error label,.ui.form .fields.error .field .input,.ui.form .fields.error .field label{color:#D95C5C}.ui.form .field.error .corner.label,.ui.form .fields.error .field .corner.label{border-color:#D95C5C;color:#FFF}.ui.form .field.error input[type=color],.ui.form .field.error input[type=date],.ui.form .field.error input[type=datetime-local],.ui.form .field.error input[type=datetime],.ui.form .field.error input[type=email],.ui.form .field.error input[type=month],.ui.form .field.error input[type=number],.ui.form .field.error input[type=password],.ui.form .field.error input[type=search],.ui.form .field.error input[type=tel],.ui.form .field.error input[type=text],.ui.form .field.error input[type=time],.ui.form .field.error input[type=url],.ui.form .field.error input[type=week],.ui.form .field.error textarea,.ui.form .fields.error .field input[type=color],.ui.form .fields.error .field input[type=date],.ui.form .fields.error .field input[type=datetime-local],.ui.form .fields.error .field input[type=datetime],.ui.form .fields.error .field input[type=email],.ui.form .fields.error .field input[type=month],.ui.form .fields.error .field input[type=number],.ui.form .fields.error .field input[type=password],.ui.form .fields.error .field input[type=search],.ui.form .fields.error .field input[type=tel],.ui.form .fields.error .field input[type=text],.ui.form .fields.error .field input[type=time],.ui.form .fields.error .field input[type=url],.ui.form .fields.error .field input[type=week],.ui.form .fields.error .field textarea{background-color:snow;border-color:#E7BEBE;border-left:none;color:#D95C5C;padding-left:1.2em;border-bottom-left-radius:0;border-top-left-radius:0;-webkit-box-shadow:.3em 0 0 0 #D95C5C inset;box-shadow:.3em 0 0 0 #D95C5C inset}.ui.form .field.error input[type=color]:focus,.ui.form .field.error input[type=date]:focus,.ui.form .field.error input[type=datetime-local]:focus,.ui.form .field.error input[type=datetime]:focus,.ui.form .field.error input[type=email]:focus,.ui.form .field.error input[type=month]:focus,.ui.form .field.error input[type=number]:focus,.ui.form .field.error input[type=password]:focus,.ui.form .field.error input[type=search]:focus,.ui.form .field.error input[type=tel]:focus,.ui.form .field.error input[type=text]:focus,.ui.form .field.error input[type=time]:focus,.ui.form .field.error input[type=url]:focus,.ui.form .field.error input[type=week]:focus,.ui.form .field.error textarea:focus{border-color:#ff5050;color:#ff5050;-webkit-appearance:none;-webkit-box-shadow:.3em 0 0 0 #FF5050 inset;box-shadow:.3em 0 0 0 #FF5050 inset}.ui.form .field.error .ui.dropdown,.ui.form .field.error .ui.dropdown .item,.ui.form .fields.error .field .ui.dropdown,.ui.form .fields.error .field .ui.dropdown .item{background-color:snow;color:#D95C5C}.ui.form .field.error .ui.dropdown,.ui.form .field.error .ui.dropdown:hover,.ui.form .fields.error .field .ui.dropdown,.ui.form .fields.error .field .ui.dropdown:hover{-webkit-box-shadow:0 0 0 1px #E7BEBE!important;box-shadow:0 0 0 1px #E7BEBE!important}.ui.form .field.error .ui.dropdown:hover .menu,.ui.form .fields.error .field .ui.dropdown:hover .menu{-webkit-box-shadow:0 1px 0 1px #E7BEBE;box-shadow:0 1px 0 1px #E7BEBE}.ui.form .field.error .ui.selection.dropdown .menu .item:hover,.ui.form .fields.error .field .ui.selection.dropdown .menu .item:hover{background-color:#FFF2F2}.ui.form .field.error .ui.dropdown .menu .active.item,.ui.form .fields.error .field .ui.dropdown .menu .active.item{background-color:#FDCFCF!important}.ui.form ::-webkit-input-placeholder{color:#AAA}.ui.form ::-moz-placeholder{color:#AAA}.ui.form :focus::-webkit-input-placeholder{color:#999}.ui.form :focus::-moz-placeholder{color:#999}.ui.form .error ::-webkit-input-placeholder{color:rgba(255,80,80,.4)}.ui.form .error ::-moz-placeholder{color:rgba(255,80,80,.4)}.ui.form .error :focus::-webkit-input-placeholder{color:rgba(255,80,80,.7)}.ui.form .error :focus::-moz-placeholder{color:rgba(255,80,80,.7)}.ui.form .field :disabled,.ui.form .field.disabled,.ui.form .field.disabled label{opacity:.5}.ui.form .field.disabled :disabled{opacity:1}.ui.form.loading{position:relative}.ui.form.loading:after{position:absolute;top:0;left:0;content:'';width:100%;height:100%;background:url(../images/loader-large.gif) 50% 50% no-repeat rgba(255,255,255,.8);visibility:visible}.ui.form.fluid{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.form input.attached{width:auto}.ui.form .date.field>label{position:relative}.ui.form .date.field>label:after{position:absolute;top:2em;right:.5em;font-family:Icons;content:'\f133';font-size:1.2em;font-weight:400;color:#CCC}.ui.inverted.form label{color:#FFF}.ui.inverted.form .field.error input[type=color],.ui.inverted.form .field.error input[type=date],.ui.inverted.form .field.error input[type=datetime-local],.ui.inverted.form .field.error input[type=datetime],.ui.inverted.form .field.error input[type=email],.ui.inverted.form .field.error input[type=month],.ui.inverted.form .field.error input[type=number],.ui.inverted.form .field.error input[type=password],.ui.inverted.form .field.error input[type=search],.ui.inverted.form .field.error input[type=tel],.ui.inverted.form .field.error input[type=text],.ui.inverted.form .field.error input[type=time],.ui.inverted.form .field.error input[type=url],.ui.inverted.form .field.error input[type=week],.ui.inverted.form .field.error textarea{background-color:#FCC}.ui.inverted.form .ui.checkbox label{color:rgba(255,255,255,.8)}.ui.inverted.form .ui.checkbox .box:hover,.ui.inverted.form .ui.checkbox label:hover{color:#FFF}.ui.form .grouped.fields{margin:0 0 1em}.ui.form .grouped.fields .field{display:block;float:none;margin:.5em 0;padding:0}.ui.form .fields{clear:both}.ui.form .fields:after{content:' ';display:block;clear:both;visibility:hidden;line-height:0;height:0}.ui.form .fields>.field{clear:none;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.form .fields>.field:first-child{border-left:none;-webkit-box-shadow:none;box-shadow:none}.ui.form .two.fields>.field,.ui.form .two.fields>.fields{width:50%;padding-left:1%;padding-right:1%}.ui.form .three.fields>.field,.ui.form .three.fields>.fields{width:33.333%;padding-left:1%;padding-right:1%}.ui.form .four.fields>.field,.ui.form .four.fields>.fields{width:25%;padding-left:1%;padding-right:1%}.ui.form .five.fields>.field,.ui.form .five.fields>.fields{width:20%;padding-left:1%;padding-right:1%}.ui.form .fields .field:first-child{padding-left:0}.ui.form .fields .field:last-child{padding-right:0}.ui.form .fields .wide.field{width:6.25%;padding-left:1%;padding-right:1%}.ui.form .fields .wide.field:first-child{padding-left:0}.ui.form .fields .wide.field:last-child{padding-right:0}.ui.form .fields>.one.wide.field{width:6.25%}.ui.form .fields>.two.wide.field{width:12.5%}.ui.form .fields>.three.wide.field{width:18.75%}.ui.form .fields>.four.wide.field{width:25%}.ui.form .fields>.five.wide.field{width:31.25%}.ui.form .fields>.six.wide.field{width:37.5%}.ui.form .fields>.seven.wide.field{width:43.75%}.ui.form .fields>.eight.wide.field{width:50%}.ui.form .fields>.nine.wide.field{width:56.25%}.ui.form .fields>.ten.wide.field{width:62.5%}.ui.form .fields>.eleven.wide.field{width:68.75%}.ui.form .fields>.twelve.wide.field{width:75%}.ui.form .fields>.thirteen.wide.field{width:81.25%}.ui.form .fields>.fourteen.wide.field{width:87.5%}.ui.form .fields>.fifteen.wide.field{width:93.75%}.ui.form .fields>.sixteen.wide.field{width:100%}@media only screen and (max-width:767px){.ui.form .fields>.eight.wide.field,.ui.form .fields>.eleven.wide.field,.ui.form .fields>.fifteen.wide.field,.ui.form .fields>.five.wide.field,.ui.form .fields>.four.wide.field,.ui.form .fields>.fourteen.wide.field,.ui.form .fields>.nine.wide.field,.ui.form .fields>.seven.wide.field,.ui.form .fields>.six.wide.field,.ui.form .fields>.sixteen.wide.field,.ui.form .fields>.ten.wide.field,.ui.form .fields>.thirteen.wide.field,.ui.form .fields>.three.wide.field,.ui.form .fields>.twelve.wide.field,.ui.form .fields>.two.wide.field,.ui.form .five.fields>.field,.ui.form .five.fields>.fields,.ui.form .four.fields>.field,.ui.form .four.fields>.fields,.ui.form .three.fields>.field,.ui.form .three.fields>.fields,.ui.form .two.fields>.field,.ui.form .two.fields>.fields{width:100%;padding-left:0;padding-right:0}}.ui.form .inline.fields .field{min-height:1.3em;margin-right:.5em}.ui.form .inline.field>.ui.input,.ui.form .inline.field>input,.ui.form .inline.field>label,.ui.form .inline.field>p,.ui.form .inline.fields .field>.ui.input,.ui.form .inline.fields .field>input,.ui.form .inline.fields .field>label,.ui.form .inline.fields .field>p{display:inline-block;width:auto;margin-top:0;margin-bottom:0;vertical-align:middle}.ui.form .inline.field>:first-child,.ui.form .inline.fields .field>:first-child{margin:0 .5em 0 0}.ui.form .inline.field>:only-child,.ui.form .inline.fields .field>:only-child{margin:0}.ui.small.form{font-size:.875em}.ui.small.form input[type=color],.ui.small.form input[type=date],.ui.small.form input[type=datetime-local],.ui.small.form input[type=datetime],.ui.small.form input[type=email],.ui.small.form input[type=month],.ui.small.form input[type=number],.ui.small.form input[type=password],.ui.small.form input[type=search],.ui.small.form input[type=tel],.ui.small.form input[type=text],.ui.small.form input[type=time],.ui.small.form input[type=url],.ui.small.form input[type=week],.ui.small.form label,.ui.small.form textarea{font-size:1em}.ui.large.form{font-size:1.125em}.ui.grid{display:block;text-align:left;font-size:0;margin:0 -1.5%;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body>.ui.grid{margin-left:0!important;margin-right:0!important}.ui.grid:after,.ui.row:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.grid>.column,.ui.grid>.row>.column{display:inline-block;text-align:left;font-size:1rem;width:6.25%;padding-left:1.5%;padding-right:1.5%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;vertical-align:top}.ui.grid>.column{margin-top:1rem;margin-bottom:1rem}.ui.grid>.row{display:block;width:100%!important;margin-top:1.5%;padding:1rem 0 0;font-size:0}.ui.grid>.row:first-child{padding-top:0;margin-top:0}.ui.grid>.row>.column>img,.ui.grid>.row>img{max-width:100%}.ui.grid .column>.ui.segment:only-child{margin:0}.ui.page.grid{min-width:320px;margin-left:0;margin-right:0}@media only screen and (max-width:991px){.ui.page.grid{padding:0 4%}}@media only screen and (min-width:992px){.ui.page.grid{padding:0 8%}}@media only screen and (min-width:1500px){.ui.page.grid{padding:0 13%}}@media only screen and (min-width:1750px){.ui.page.grid{padding:0 18%}}@media only screen and (min-width:2000px){.ui.page.grid{padding:0 23%}}.ui.column.grid>.one.wide.column,.ui.grid>.column.row>.one.wide.column,.ui.grid>.one.wide.column,.ui.grid>.row>.one.wide.column{width:6.25%}.ui.column.grid>.two.wide.column,.ui.grid>.column.row>.two.wide.column,.ui.grid>.row>.two.wide.column,.ui.grid>.two.wide.column{width:12.5%}.ui.column.grid>.three.wide.column,.ui.grid>.column.row>.three.wide.column,.ui.grid>.row>.three.wide.column,.ui.grid>.three.wide.column{width:18.75%}.ui.column.grid>.four.wide.column,.ui.grid>.column.row>.four.wide.column,.ui.grid>.four.wide.column,.ui.grid>.row>.four.wide.column{width:25%}.ui.column.grid>.five.wide.column,.ui.grid>.column.row>.five.wide.column,.ui.grid>.five.wide.column,.ui.grid>.row>.five.wide.column{width:31.25%}.ui.column.grid>.six.wide.column,.ui.grid>.column.row>.six.wide.column,.ui.grid>.row>.six.wide.column,.ui.grid>.six.wide.column{width:37.5%}.ui.column.grid>.seven.wide.column,.ui.grid>.column.row>.seven.wide.column,.ui.grid>.row>.seven.wide.column,.ui.grid>.seven.wide.column{width:43.75%}.ui.column.grid>.eight.wide.column,.ui.grid>.column.row>.eight.wide.column,.ui.grid>.eight.wide.column,.ui.grid>.row>.eight.wide.column{width:50%}.ui.column.grid>.nine.wide.column,.ui.grid>.column.row>.nine.wide.column,.ui.grid>.nine.wide.column,.ui.grid>.row>.nine.wide.column{width:56.25%}.ui.column.grid>.ten.wide.column,.ui.grid>.column.row>.ten.wide.column,.ui.grid>.row>.ten.wide.column,.ui.grid>.ten.wide.column{width:62.5%}.ui.column.grid>.eleven.wide.column,.ui.grid>.column.row>.eleven.wide.column,.ui.grid>.eleven.wide.column,.ui.grid>.row>.eleven.wide.column{width:68.75%}.ui.column.grid>.twelve.wide.column,.ui.grid>.column.row>.twelve.wide.column,.ui.grid>.row>.twelve.wide.column,.ui.grid>.twelve.wide.column{width:75%}.ui.column.grid>.thirteen.wide.column,.ui.grid>.column.row>.thirteen.wide.column,.ui.grid>.row>.thirteen.wide.column,.ui.grid>.thirteen.wide.column{width:81.25%}.ui.column.grid>.fourteen.wide.column,.ui.grid>.column.row>.fourteen.wide.column,.ui.grid>.fourteen.wide.column,.ui.grid>.row>.fourteen.wide.column{width:87.5%}.ui.column.grid>.fifteen.wide.column,.ui.grid>.column.row>.fifteen.wide.column,.ui.grid>.fifteen.wide.column,.ui.grid>.row>.fifteen.wide.column{width:93.75%}.ui.column.grid>.sixteen.wide.column,.ui.grid>.column.row>.sixteen.wide.column,.ui.grid>.one.column.row>.column,.ui.grid>.row>.sixteen.wide.column,.ui.grid>.sixteen.wide.column,.ui.one.column.grid>.column,.ui.one.column.grid>.row>.column{width:100%}.ui.grid>.two.column.row>.column,.ui.two.column.grid>.column,.ui.two.column.grid>.row>.column{width:50%}.ui.grid>.three.column.row>.column,.ui.three.column.grid>.column,.ui.three.column.grid>.row>.column{width:33.3333%}.ui.four.column.grid>.column,.ui.four.column.grid>.row>.column,.ui.grid>.four.column.row>.column{width:25%}.ui.five.column.grid>.column,.ui.five.column.grid>.row>.column,.ui.grid>.five.column.row>.column{width:20%}.ui.grid>.six.column.row>.column,.ui.six.column.grid>.column,.ui.six.column.grid>.row>.column{width:16.66667%}.ui.grid>.seven.column.row>.column,.ui.seven.column.grid>.column,.ui.seven.column.grid>.row>.column{width:14.2857%}.ui.eight.column.grid>.column,.ui.eight.column.grid>.row>.column,.ui.grid>.eight.column.row>.column{width:12.5%}.ui.grid>.nine.column.row>.column,.ui.nine.column.grid>.column,.ui.nine.column.grid>.row>.column{width:11.1111%}.ui.grid>.ten.column.row>.column,.ui.ten.column.grid>.column,.ui.ten.column.grid>.row>.column{width:10%}.ui.eleven.column.grid>.column,.ui.eleven.column.grid>.row>.column,.ui.grid>.eleven.column.row>.column{width:9.0909%}.ui.grid>.twelve.column.row>.column,.ui.twelve.column.grid>.column,.ui.twelve.column.grid>.row>.column{width:8.3333%}.ui.grid>.thirteen.column.row>.column,.ui.thirteen.column.grid>.column,.ui.thirteen.column.grid>.row>.column{width:7.6923%}.ui.fourteen.column.grid>.column,.ui.fourteen.column.grid>.row>.column,.ui.grid>.fourteen.column.row>.column{width:7.1428%}.ui.fifteen.column.grid>.column,.ui.fifteen.column.grid>.row>.column,.ui.grid>.fifteen.column.row>.column{width:6.6666%}.ui.grid>.sixteen.column.row>.column,.ui.sixteen.column.grid>.column,.ui.sixteen.column.grid>.row>.column{width:6.25%}.ui.grid>.column:only-child,.ui.grid>.row>.column:only-child{width:100%}.ui.relaxed.grid{margin:0 -2.5%}.ui.relaxed.grid>.column,.ui.relaxed.grid>.row>.column{padding-left:2.5%;padding-right:2.5%}.ui.grid .left.floated.column{float:left}.ui.grid .right.floated.column{float:right}.ui.divided.grid,.ui.divided.grid>.row{display:table;width:100%;margin-left:0!important;margin-right:0!important}.ui.divided.grid>.column:not(.row),.ui.divided.grid>.row>.column{display:table-cell;-webkit-box-shadow:-1px 0 0 0 rgba(0,0,0,.1),-2px 0 0 0 rgba(255,255,255,.8);box-shadow:-1px 0 0 0 rgba(0,0,0,.1),-2px 0 0 0 rgba(255,255,255,.8)}.ui.divided.grid>.column.row{display:table}.ui.divided.grid>.column:first-child,.ui.divided.grid>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui.vertically.divided.grid>.row{-webkit-box-shadow:0 -1px 0 0 rgba(0,0,0,.1),0 -2px 0 0 rgba(255,255,255,.8)!important;box-shadow:0 -1px 0 0 rgba(0,0,0,.1),0 -2px 0 0 rgba(255,255,255,.8)!important}.ui.vertically.divided.grid>.column:not(.row),.ui.vertically.divided.grid>.row:first-child,.ui.vertically.divided.grid>.row>.column{-webkit-box-shadow:none!important;box-shadow:none!important}.ui.celled.grid{display:table;width:100%;margin-left:0!important;margin-right:0!important;-webkit-box-shadow:0 0 0 1px #DFDFDF;box-shadow:0 0 0 1px #DFDFDF}.ui.celled.grid>.column.row,.ui.celled.grid>.column.row:first-child,.ui.celled.grid>.row{display:table;width:100%;margin-top:0;padding-top:0;-webkit-box-shadow:0 -1px 0 0 #dfdfdf;box-shadow:0 -1px 0 0 #dfdfdf}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{display:table-cell;padding:.75em;-webkit-box-shadow:-1px 0 0 0 #dfdfdf;box-shadow:-1px 0 0 0 #dfdfdf}.ui.celled.grid>.column:first-child,.ui.celled.grid>.row>.column:first-child,.ui.celled.page.grid{-webkit-box-shadow:none;box-shadow:none}.ui.grid .left.aligned.column,.ui.grid>.left.aligned.row>.column,.ui.left.aligned.grid,.ui.left.aligned.grid>.column,.ui.left.aligned.grid>.row>.column{text-align:left}.ui.center.aligned.grid,.ui.center.aligned.grid>.column,.ui.center.aligned.grid>.row>.column,.ui.grid .center.aligned.column,.ui.grid>.center.aligned.row>.column{text-align:center}.ui.grid .right.aligned.column,.ui.grid>.right.aligned.row>.column,.ui.right.aligned.grid,.ui.right.aligned.grid>.column,.ui.right.aligned.grid>.row>.column{text-align:right}.ui.grid .justified.column,.ui.grid>.justified.row>.column,.ui.justified.grid,.ui.justified.grid>.column,.ui.justified.grid>.row>.column{text-align:justify;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ui.grid .top.aligned.column,.ui.grid>.top.aligned.row>.column,.ui.top.aligned.grid,.ui.top.aligned.grid>.column,.ui.top.aligned.grid>.row>.column{vertical-align:top}.ui.grid .middle.aligned.column,.ui.grid>.middle.aligned.row>.column,.ui.middle.aligned.grid,.ui.middle.aligned.grid>.column,.ui.middle.aligned.grid>.row>.column{vertical-align:middle}.ui.bottom.aligned.grid,.ui.bottom.aligned.grid>.column,.ui.bottom.aligned.grid>.row>.column,.ui.grid .bottom.aligned.column,.ui.grid>.bottom.aligned.row>.column{vertical-align:bottom}.ui.grid>.equal.height.row{display:table;width:100%}.ui.grid>.equal.height.row>.column{display:table-cell}@media only screen and (max-width:767px){.ui.computer:not(.mobile).only.grid,.ui.grid>.computer:not(.mobile).only.column,.ui.grid>.computer:not(.mobile).only.row,.ui.grid>.row>.computer:not(.mobile).only.column,.ui.grid>.row>.tablet:not(.mobile).only.column,.ui.grid>.tablet:not(.mobile).only.column,.ui.grid>.tablet:not(.mobile).only.row,.ui.tablet:not(.mobile).only.grid{display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.computer:not(.tablet).only.grid,.ui.grid>.computer:not(.tablet).only.column,.ui.grid>.computer:not(.tablet).only.row,.ui.grid>.mobile:not(.tablet).only.column,.ui.grid>.mobile:not(.tablet).only.row,.ui.grid>.row>.computer:not(.tablet).only.column,.ui.grid>.row>.mobile:not(.tablet).only.column,.ui.mobile:not(.tablet).only.grid{display:none!important}}@media only screen and (min-width:992px){.ui.grid>.mobile:not(.computer).only.column,.ui.grid>.mobile:not(.computer).only.row,.ui.grid>.row>.mobile:not(.computer).only.column,.ui.grid>.row>.tablet:not(.computer).only.column,.ui.grid>.tablet:not(.computer).only.column,.ui.grid>.tablet:not(.computer).only.row,.ui.mobile:not(.computer).only.grid,.ui.tablet:not(.computer).only.grid{display:none!important}}@media only screen and (max-width:767px){.ui.five.column.doubling.grid>.column,.ui.five.column.doubling.grid>.row>.column,.ui.four.column.doubling.grid>.column,.ui.four.column.doubling.grid>.row>.column,.ui.grid>.five.column.doubling.row>.column,.ui.grid>.four.column.doubling.row>.column,.ui.grid>.three.column.doubling.row>.column,.ui.grid>.two.column.doubling.row>.column,.ui.three.column.doubling.grid>.column,.ui.three.column.doubling.grid>.row>.column,.ui.two.column.doubling.grid>.column,.ui.two.column.doubling.grid>.row>.column{width:100%}.ui.eight.column.doubling.grid>.column,.ui.eight.column.doubling.grid>.row>.column,.ui.grid>.eight.column.doubling.row>.column,.ui.grid>.nine.column.doubling.row>.column,.ui.grid>.seven.column.doubling.row>.column,.ui.grid>.six.column.doubling.row>.column,.ui.grid>.ten.column.doubling.row>.column,.ui.nine.column.doubling.grid>.column,.ui.nine.column.doubling.grid>.row>.column,.ui.seven.column.doubling.grid>.column,.ui.seven.column.doubling.grid>.row>.column,.ui.six.column.doubling.grid>.column,.ui.six.column.doubling.grid>.row>.column,.ui.ten.column.doubling.grid>.column,.ui.ten.column.doubling.grid>.row>.column{width:50%}.ui.fourteen.column.doubling.grid>.column,.ui.fourteen.column.doubling.grid>.row>.column,.ui.grid>.fourteen.column.doubling.row>.column,.ui.grid>.twelve.column.doubling.row>.column,.ui.twelve.column.doubling.grid>.column,.ui.twelve.column.doubling.grid>.row>.column{width:33.3333333333333%}.ui.grid>.sixteen.column.doubling.row>.column,.ui.sixteen.column.doubling.grid>.column,.ui.sixteen.column.doubling.grid>.row>.column{width:25%}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid>.two.column.doubling.row>.column,.ui.two.column.doubling.grid>.column,.ui.two.column.doubling.grid>.row>.column{width:100%}.ui.four.column.doubling.grid>.column,.ui.four.column.doubling.grid>.row>.column,.ui.grid>.four.column.doubling.row>.column,.ui.grid>.three.column.doubling.row>.column,.ui.three.column.doubling.grid>.column,.ui.three.column.doubling.grid>.row>.column{width:50%}.ui.eight.column.doubling.grid>.column,.ui.eight.column.doubling.grid>.row>.column,.ui.five.column.doubling.grid>.column,.ui.five.column.doubling.grid>.row>.column,.ui.grid>.eight.column.doubling.row>.column,.ui.grid>.five.column.doubling.row>.column,.ui.grid>.six.column.doubling.row>.column,.ui.six.column.doubling.grid>.column,.ui.six.column.doubling.grid>.row>.column{width:33.3333333%}.ui.eight.column.doubling.grid>.column,.ui.eight.column.doubling.grid>.row>.column,.ui.grid>.eight.column.doubling.row>.column,.ui.grid>.nine.column.doubling.row>.column,.ui.nine.column.doubling.grid>.column,.ui.nine.column.doubling.grid>.row>.column{width:25%}.ui.grid>.ten.column.doubling.row>.column,.ui.ten.column.doubling.grid>.column,.ui.ten.column.doubling.grid>.row>.column{width:20%}.ui.grid>.twelve.column.doubling.row>.column,.ui.twelve.column.doubling.grid>.column,.ui.twelve.column.doubling.grid>.row>.column{width:16.6666666%}.ui.fourteen.column.doubling.grid>.column,.ui.fourteen.column.doubling.grid>.row>.column,.ui.grid>.fourteen.column.doubling.row>.column{width:14.28571428571429%}.ui.grid>.sixteen.column.doubling.row>.column,.ui.sixteen.column.doubling.grid>.column,.ui.sixteen.column.doubling.grid>.row>.column{width:12.5%}}@media only screen and (max-width:767px){.ui.stackable.grid{display:block!important;padding:0;margin:0}.ui.stackable.grid>.column,.ui.stackable.grid>.row>.column{display:block!important;width:auto!important;margin:1em 0 0!important;padding:1em 0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.stackable.celled.grid .column,.ui.stackable.divided.grid .column{border-top:1px dotted rgba(0,0,0,.1)}.ui.stackable.grid>.column:first-child,.ui.stackable.grid>.row:first-child>.column:first-child{margin-top:0!important;padding-top:0!important}.ui.stackable.celled.grid>.column:first-child,.ui.stackable.celled.grid>.row:first-child>.column:first-child,.ui.stackable.divided.grid>.column:first-child,.ui.stackable.divided.grid>.row:first-child>.column:first-child{border-top:none!important}.ui.stackable.page.grid>.column,.ui.stackable.page.grid>.row>.column{padding-left:1em!important;padding-right:1em!important}.ui.stackable.grid .vertical.pointing.menu .item:after{display:none}}.ui.menu{margin:1rem 0;background-color:#FFF;font-size:0;font-weight:400;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);border-radius:.1875rem}.ui.menu:first-child{margin-top:0}.ui.menu:last-child{margin-bottom:0}.ui.menu:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.menu>.item:first-child{border-radius:.1875em 0 0 .1875em}.ui.menu>.item:last-child{border-radius:0 .1875em .1875em 0}.ui.menu .item{vertical-align:middle;line-height:1;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:opacity .2s ease,background .2s ease,-webkit-box-shadow .2s ease;-moz-transition:opacity .2s ease,background .2s ease,box-shadow .2s ease;transition:opacity .2s ease,background .2s ease,box-shadow .2s ease}.ui.menu .item,.ui.menu .item>a:not(.button){color:rgba(0,0,0,.75)}.ui.menu .item .item,.ui.menu .item .item>a:not(.button){color:rgba(30,30,30,.7)}.ui.menu .item .item .item,.ui.menu .item .item .item>a:not(.button){color:rgba(30,30,30,.6)}.ui.menu .dropdown .menu .item,.ui.menu .dropdown .menu .item a:not(.button){color:rgba(0,0,0,.75)}.ui.menu .dropdown .menu .item a:not(.button):hover,.ui.menu .item .menu .link.item:hover,.ui.menu .item .menu a.item:hover{color:rgba(0,0,0,.85)}.ui.menu .active.item,.ui.menu .active.item a:not(.button){color:rgba(0,0,0,.85);border-radius:0}.ui.menu .item{position:relative;display:inline-block;padding:.83em .95em;border-top:0 solid transparent;-webkit-tap-highlight-color:transparent;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ui.menu .menu{margin:0}.ui.menu .item.left,.ui.menu .menu.left{float:left}.ui.menu .item.right,.ui.menu .menu.right{float:right}.ui.menu .item:before{position:absolute;content:'';top:0;left:0;width:1px;height:100%;background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.05)),color-stop(50%,rgba(0,0,0,.1)),to(rgba(0,0,0,.05)));background-image:-webkit-linear-gradient(rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:-moz-linear-gradient(rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%);background-image:linear-gradient(rgba(0,0,0,.05) 0,rgba(0,0,0,.1) 50%,rgba(0,0,0,.05) 100%)}.ui.menu .item:first-child:before,.ui.menu>.menu:not(.right):first-child>.item:first-child:before{display:none}.ui.menu .item.right:before,.ui.menu .menu.right .item:before{right:auto;left:0}.ui.menu .item>p:only-child,.ui.menu .text.item>*{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;line-height:1.3;color:rgba(0,0,0,.6)}.ui.menu .item>p:first-child{margin-top:0}.ui.menu .item>p:last-child{margin-bottom:0}.ui.menu:not(.vertical) .item>.button{position:relative;top:-.05em;margin:-.55em 0;padding-bottom:.55em;padding-top:.55em;font-size:.875em}.ui.menu:not(.vertical) .item>.input{margin-top:-.85em;margin-bottom:-.85em;padding-top:.3em;padding-bottom:.3em;width:100%;vertical-align:top}.ui.menu .item>.input input{padding-top:.35em;padding-bottom:.35em}.ui.vertical.menu .item>.input input{margin:0;padding-top:.63em;padding-bottom:.63em}.ui.menu:not(.vertical) .item>.button.labeled>.icon{padding-top:.6em}.ui.menu:not(.vertical) .item .action.input>.button{font-size:.8em;padding:.55em .8em}.ui.small.menu:not(.vertical) .item>.input input{padding-top:.4em;padding-bottom:.4em}.ui.large.menu:not(.vertical) .item>.input input{top:-.125em;padding-bottom:.6em;padding-top:.6em}.ui.large.menu:not(.vertical) .item .action.input>.button{font-size:.8em;padding:.9em}.ui.large.menu:not(.vertical) .item .action.input>.button>.icon{padding-top:.8em}.ui.menu .header.item{background-color:rgba(0,0,0,.04);margin:0}.ui.vertical.menu .header.item{font-weight:700}.ui.menu .dropdown .menu .item .icon{float:none;margin:0 .75em 0 0}.ui.menu .dropdown.item .menu{left:1px;margin:0;min-width:-webkit-calc(99%);min-width:-moz-calc(99%);min-width:calc(99%);-webkit-box-shadow:0 1px 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px 1px rgba(0,0,0,.1)}.ui.secondary.menu .dropdown.item .menu{left:0;min-width:100%}.ui.menu .pointing.dropdown.item .menu{margin-top:.75em}.ui.menu .simple.dropdown.item .menu{margin:0!important}.ui.menu .dropdown.item .menu .item{width:100%;color:rgba(0,0,0,.75)}.ui.menu .dropdown.item .menu .active.item{-webkit-box-shadow:none!important;box-shadow:none!important}.ui.menu .ui.dropdown .menu .item:before{display:none}.ui.menu .item>.label{background-color:rgba(0,0,0,.35);color:#FFF;margin:-.15em 0 -.15em .5em;padding:.3em .8em;vertical-align:baseline}.ui.menu .item>.floating.label{padding:.3em .8em}.ui.menu .item>img:only-child{display:block;max-width:100%;margin:0 auto}.ui.link.menu .item:hover,.ui.menu .link.item:hover,.ui.menu .ui.dropdown .menu .item:hover,.ui.menu a.item:hover{cursor:pointer;background-color:rgba(0,0,0,.02)}.ui.menu .ui.dropdown.item.active{background-color:rgba(0,0,0,.02);-webkit-box-shadow:none;box-shadow:none;-moz-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui.link.menu .item:active,.ui.menu .link.item:active,.ui.menu .ui.dropdown .menu .item:active,.ui.menu a.item:active{background-color:rgba(0,0,0,.05)}.ui.menu .active.item{background-color:rgba(0,0,0,.01);color:rgba(0,0,0,.95);-webkit-box-shadow:0 .2em 0 inset;box-shadow:0 .2em 0 inset}.ui.vertical.menu .active.item{border-radius:0;-webkit-box-shadow:.2em 0 0 inset;box-shadow:.2em 0 0 inset}.ui.vertical.menu>.active.item:first-child{border-radius:0 .1875em 0 0}.ui.vertical.menu>.active.item:last-child{border-radius:0 0 .1875em}.ui.vertical.menu>.active.item:only-child{border-radius:0 .1875em .1875em 0}.ui.vertical.menu .active.item .menu .active.item{border-left:none;padding-left:1.5rem}.ui.vertical.menu .item .menu .active.item{background-color:rgba(0,0,0,.03);-webkit-box-shadow:none;box-shadow:none}.ui.menu .item.disabled,.ui.menu .item.disabled:hover{cursor:default;color:rgba(0,0,0,.2);background-color:transparent!important}.ui.menu.loading{position:relative}.ui.menu.loading:after{position:absolute;top:0;left:0;content:'';width:100%;height:100%;background:url(../images/loader-large.gif) 50% 50% no-repeat rgba(255,255,255,.8);visibility:visible}.ui.vertical.menu .item{display:block;height:auto!important;border-top:none;border-left:0 solid transparent;border-right:none}.ui.vertical.menu>.item:first-child{border-radius:.1875em .1875em 0 0}.ui.vertical.menu>.item:last-child{border-radius:0 0 .1875em .1875em}.ui.vertical.menu .item>.label{float:right;text-align:center}.ui.vertical.menu .item>i.icon{float:right;width:1.22em;margin:0 0 0 .5em}.ui.vertical.menu .item>.label+i.icon{float:none;margin:0 .25em 0 0}.ui.vertical.menu .item:before{position:absolute;content:'';top:0;left:0;width:100%;height:1px;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-moz-linear-gradient(left,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.03)),color-stop(1.5em,rgba(0,0,0,.1)),to(rgba(0,0,0,.03)));background-image:linear-gradient(to right,rgba(0,0,0,.03) 0,rgba(0,0,0,.1) 1.5em,rgba(0,0,0,.03) 100%)}.ui.vertical.menu .item:first-child:before{background-image:none!important}.ui.vertical.menu .dropdown.item>i{float:right;content:"\f0da"}.ui.vertical.menu .dropdown.item .menu{top:0!important;left:100%;margin:0 0 0 1px;-webkit-box-shadow:0 0 1px 1px #DDD;box-shadow:0 0 1px 1px #DDD}.ui.vertical.menu .dropdown.item.active{border-top-right-radius:0;border-bottom-right-radius:0}.ui.vertical.menu .dropdown.item .menu .item{font-size:1rem}.ui.vertical.menu .dropdown.item .menu .item i.icon{margin-right:0}.ui.vertical.menu .dropdown.item.active{-webkit-box-shadow:none;box-shadow:none}.ui.vertical.menu .item>.menu{margin:.5em -.95em 0}.ui.vertical.menu .item>.menu>.item{padding:.5rem 1.5rem;font-size:.875em}.ui.vertical.menu .item>.menu>.item:before{display:none}.ui.tiered.menu>.sub.menu>.item{color:rgba(0,0,0,.4)}.ui.tiered.menu .item.active,.ui.tiered.menu>.menu>.item:hover{color:rgba(0,0,0,.8)}.ui.tiered.menu>.menu .item.active:after{position:absolute;content:'';margin-top:-1px;top:100%;left:0;width:100%;height:2px;background-color:#FBFBFB}.ui.tiered.menu .sub.menu{background-color:rgba(0,0,0,.01);border-radius:0;border-top:1px solid rgba(0,0,0,.1);-webkit-box-shadow:none;box-shadow:none;color:#FFF}.ui.tiered.menu .sub.menu .item{font-size:.875rem}.ui.tiered.menu .sub.menu .item:before{background-image:none}.ui.tiered.menu .sub.menu .active.item{padding-top:.83em;background-color:transparent;border-radius:0;border-top:medium none;-webkit-box-shadow:none;box-shadow:none;color:rgba(0,0,0,.7)!important}.ui.tiered.menu .sub.menu .active.item:after{display:none}.ui.inverted.tiered.menu>.menu>.item{color:rgba(255,255,255,.5)}.ui.inverted.tiered.menu .sub.menu{background-color:rgba(0,0,0,.2)}.ui.inverted.tiered.menu .sub.menu .item{color:rgba(255,255,255,.6)}.ui.inverted.tiered.menu>.menu>.item:hover{color:rgba(255,255,255,.9)}.ui.inverted.tiered.menu .active.item:after{display:none}.ui.inverted.tiered.menu>.menu>.active.item,.ui.inverted.tiered.menu>.sub.menu>.active.item{color:#fff!important;-webkit-box-shadow:none;box-shadow:none}.ui.pointing.tiered.menu>.menu>.item:after{display:none}.ui.pointing.tiered.menu>.sub.menu>.item:after{display:block}.ui.tabular.menu{background-color:transparent;border-bottom:1px solid #DCDDDE;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.tabular.menu .item{background-color:transparent;border-left:1px solid transparent;border-right:1px solid transparent;border-top:1px solid transparent;padding-left:1.4em;padding-right:1.4em;color:rgba(0,0,0,.6)}.ui.tabular.menu .item:before{display:none}.ui.tabular.menu .item:hover{background-color:transparent;color:rgba(0,0,0,.8)}.ui.tabular.menu .active.item{position:relative;background-color:#FFF;color:rgba(0,0,0,.8);border-color:#DCDDDE;font-weight:700;margin-bottom:-1px;border-bottom:1px solid #FFF;-webkit-box-shadow:none;box-shadow:none;border-radius:5px 5px 0 0}.ui.attached.tabular.menu{position:relative;z-index:2}.ui.tabular.menu~.bottom.attached.segment{margin:1px 0 0 1px}.ui.pagination.menu{margin:0;display:inline-block;vertical-align:middle}.ui.pagination.menu .item{min-width:3em;text-align:center}.ui.pagination.menu .icon.item i.icon{vertical-align:top}.ui.pagination.menu.floated{display:block}.ui.pagination.menu .active.item{border-top:none;padding-top:.83em;background-color:rgba(0,0,0,.05);-webkit-box-shadow:none;box-shadow:none}.ui.secondary.menu{background-color:transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.ui.secondary.menu>.item,.ui.secondary.menu>.menu>.item{-webkit-box-shadow:none;box-shadow:none;border:none;height:auto!important;margin:0 .25em;padding:.5em 1em;border-radius:.3125em}.ui.secondary.menu>.item:before,.ui.secondary.menu>.menu>.item:before{display:none!important}.ui.secondary.menu .item>.input input{background-color:transparent;border:none}.ui.secondary.menu .link.item,.ui.secondary.menu a.item{opacity:.8;-webkit-transition:none;-moz-transition:none;transition:none}.ui.secondary.menu .header.item{border-right:.1em solid rgba(0,0,0,.1);background-color:transparent;border-radius:0}.ui.secondary.menu .link.item:hover,.ui.secondary.menu a.item:hover{opacity:1}.ui.secondary.menu>.active.item,.ui.secondary.menu>.menu>.active.item{background-color:rgba(0,0,0,.08);opacity:1;-webkit-box-shadow:none;box-shadow:none}.ui.secondary.vertical.menu>.active.item{border-radius:.3125em}.ui.secondary.inverted.menu .link.item,.ui.secondary.inverted.menu a.item{color:rgba(255,255,255,.5)}.ui.secondary.inverted.menu .link.item:hover,.ui.secondary.inverted.menu a.item:hover{color:rgba(255,255,255,.9)}.ui.secondary.inverted.menu .active.item{background-color:rgba(255,255,255,.1)}.ui.secondary.item.menu>.item{margin:0}.ui.secondary.attached.menu{-webkit-box-shadow:none;box-shadow:none}.ui.secondary.pointing.menu{border-bottom:3px solid rgba(0,0,0,.1)}.ui.secondary.pointing.menu>.item,.ui.secondary.pointing.menu>.menu>.item{margin:0 0 -3px;padding:.6em .95em;border-bottom:3px solid transparent;border-radius:0;-webkit-transition:color .2s;-moz-transition:color .2s;transition:color .2s}.ui.secondary.pointing.menu .header.item{margin-bottom:-3px;background-color:transparent!important;border-right-width:0!important;font-weight:700!important;color:rgba(0,0,0,.8)!important}.ui.secondary.pointing.menu .text.item{-webkit-box-shadow:none!important;box-shadow:none!important}.ui.secondary.pointing.menu>.item:after,.ui.secondary.pointing.menu>.menu>.item:after{display:none}.ui.secondary.pointing.menu>.link.item:hover,.ui.secondary.pointing.menu>.menu>.link.item:hover,.ui.secondary.pointing.menu>.menu>a.item:hover,.ui.secondary.pointing.menu>a.item:hover{background-color:transparent;color:rgba(0,0,0,.7)}.ui.secondary.pointing.menu>.link.item:active,.ui.secondary.pointing.menu>.menu>.link.item:active,.ui.secondary.pointing.menu>.menu>a.item:active,.ui.secondary.pointing.menu>a.item:active{background-color:transparent;border-color:rgba(0,0,0,.2)}.ui.secondary.pointing.menu>.item.active,.ui.secondary.pointing.menu>.menu>.item.active{background-color:transparent;border-color:rgba(0,0,0,.4);-webkit-box-shadow:none;box-shadow:none}.ui.secondary.vertical.pointing.menu{border:none;border-right:3px solid rgba(0,0,0,.1)}.ui.secondary.vertical.menu>.item{border:none;margin:0 0 .3em;padding:.6em .8em;border-radius:.1875em}.ui.secondary.vertical.menu>.header.item{border-radius:0}.ui.secondary.vertical.pointing.menu>.item{margin:0 -3px 0 0;border-bottom:none;border-right:3px solid transparent;border-radius:0}.ui.secondary.vertical.pointing.menu>.item:hover{background-color:transparent;color:rgba(0,0,0,.7)}.ui.secondary.vertical.pointing.menu>.item:active{background-color:transparent;border-color:rgba(0,0,0,.2)}.ui.secondary.vertical.pointing.menu>.item.active{background-color:transparent;border-color:rgba(0,0,0,.4);color:rgba(0,0,0,.85)}.ui.secondary.inverted.menu{background-color:transparent}.ui.secondary.inverted.pointing.menu{border-bottom:3px solid rgba(255,255,255,.1)}.ui.secondary.inverted.pointing.menu>.item{color:rgba(255,255,255,.7)}.ui.secondary.inverted.pointing.menu>.header.item{color:#FFF!important}.ui.secondary.inverted.pointing.menu>.item:hover,.ui.secondary.inverted.pointing.menu>.menu>.item:hover{color:rgba(255,255,255,.85)}.ui.secondary.inverted.pointing.menu>.item:active,.ui.secondary.inverted.pointing.menu>.menu>.item:active{border-color:rgba(255,255,255,.4)}.ui.secondary.inverted.pointing.menu>.item.active,.ui.secondary.inverted.pointing.menu>.menu>.item.active{border-color:rgba(255,255,255,.8);color:#fff}.ui.secondary.inverted.vertical.pointing.menu{border-right:3px solid rgba(255,255,255,.1);border-bottom:none}.ui.text.menu{background-color:transparent;margin:1rem -1rem;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.ui.text.menu>.item{opacity:.8;margin:0 1em;padding:0;height:auto!important;border-radius:0;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;transition:opacity .2s ease}.ui.text.menu>.item:before{display:none!important}.ui.text.menu .header.item{background-color:transparent;opacity:1;color:rgba(50,50,50,.8);font-size:.875rem;padding:0;text-transform:uppercase;font-weight:700}.ui.text.item.menu .item{margin:0}.ui.vertical.text.menu{margin:1rem 0}.ui.vertical.text.menu:first-child{margin-top:0}.ui.vertical.text.menu:last-child{margin-bottom:0}.ui.vertical.text.menu .item{float:left;clear:left;margin:.5em 0}.ui.vertical.text.menu .item>i.icon{float:none;margin:0 .83em 0 0}.ui.vertical.text.menu .header.item{margin:.8em 0}.ui.text.menu .item:hover{opacity:1;background-color:transparent}.ui.text.menu .active.item{background-color:transparent;padding:0;border:none;opacity:1;font-weight:700;-webkit-box-shadow:none;box-shadow:none}.ui.text.attached.menu,.ui.text.pointing.menu .active.item:after{-webkit-box-shadow:none;box-shadow:none}.ui.inverted.text.menu,.ui.inverted.text.menu .item,.ui.inverted.text.menu .item.active,.ui.inverted.text.menu .item:hover{background-color:transparent}.ui.icon.menu,.ui.vertical.icon.menu{width:auto;display:inline-block;height:auto}.ui.icon.menu>.item{height:auto;text-align:center;color:rgba(60,60,60,.7)}.ui.icon.menu>.item>.icon{display:block;float:none!important;opacity:1;margin:0 auto!important}.ui.icon.menu .icon:before{opacity:1}.ui.menu .icon.item .icon{margin:0}.ui.vertical.icon.menu{float:none}.ui.inverted.icon.menu .item{color:rgba(255,255,255,.8)}.ui.inverted.icon.menu .icon{color:#fff}.ui.labeled.icon.menu{text-align:center}.ui.labeled.icon.menu>.item>.icon{display:block;font-size:1.5em!important;margin:0 auto .3em!important}.ui.green.menu .active.item,.ui.menu .green.active.item{border-color:#A1CF64!important;color:#A1CF64!important}.ui.menu .red.active.item,.ui.red.menu .active.item{border-color:#D95C5C!important;color:#D95C5C!important}.ui.blue.menu .active.item,.ui.menu .blue.active.item{border-color:#6ECFF5!important;color:#6ECFF5!important}.ui.menu .purple.active.item,.ui.purple.menu .active.item{border-color:#564F8A!important;color:#564F8A!important}.ui.menu .orange.active.item,.ui.orange.menu .active.item{border-color:#F05940!important;color:#F05940!important}.ui.menu .teal.active.item,.ui.teal.menu .active.item{border-color:#00B5AD!important;color:#00B5AD!important}.ui.inverted.menu{background-color:#333;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.menu .header.item{margin:0;background-color:rgba(0,0,0,.3);-webkit-box-shadow:none;box-shadow:none}.ui.inverted.menu .item,.ui.inverted.menu .item>a{color:#FFF}.ui.inverted.menu .item .item,.ui.inverted.menu .item .item>a{color:rgba(255,255,255,.8)}.ui.inverted.menu .dropdown .menu .item,.ui.inverted.menu .dropdown .menu .item a{color:rgba(0,0,0,.75)!important}.ui.inverted.menu .item.disabled,.ui.inverted.menu .item.disabled:hover{color:rgba(255,255,255,.2)}.ui.inverted.menu .item:before{background-image:-webkit-linear-gradient(rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-moz-linear-gradient(rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.03)),color-stop(50%,rgba(255,255,255,.1)),to(rgba(255,255,255,.03)));background-image:linear-gradient(rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%)}.ui.vertical.inverted.menu .item:before{background-image:-webkit-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-moz-linear-gradient(left,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.03)),color-stop(50%,rgba(255,255,255,.1)),to(rgba(255,255,255,.03)));background-image:linear-gradient(to right,rgba(255,255,255,.03) 0,rgba(255,255,255,.1) 50%,rgba(255,255,255,.03) 100%)}.ui.inverted.menu .dropdown.item:hover,.ui.inverted.menu .link.item:hover,.ui.inverted.menu a.item:hover,.ui.link.inverted.menu .item:hover{background-color:rgba(255,255,255,.1)}.ui.inverted.menu .item .menu .link.item:hover,.ui.inverted.menu .item .menu a.item:hover,.ui.inverted.menu .item>a:hover,.ui.inverted.menu a.item:hover{color:#fff}.ui.inverted.menu .dropdown.item:active,.ui.inverted.menu .link.item:active,.ui.inverted.menu a.item:active{background-color:rgba(255,255,255,.15)}.ui.inverted.menu .active.item{-webkit-box-shadow:none!important;box-shadow:none!important;background-color:rgba(255,255,255,.2)}.ui.inverted.menu .active.item,.ui.inverted.menu .active.item a{color:#fff!important}.ui.inverted.vertical.menu .item .menu .active.item{background-color:rgba(255,255,255,.2);color:#fff}.ui.inverted.pointing.menu .active.item:after{background-color:#5B5B5B;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.pointing.menu .active.item:hover:after{background-color:#4A4A4A}.ui.selection.menu>.item{color:rgba(0,0,0,.4)}.ui.selection.menu>.item:hover{color:rgba(0,0,0,.6)}.ui.selection.menu>.item.active{color:rgba(0,0,0,.85)}.ui.inverted.selection.menu>.item{color:rgba(255,255,255,.4)}.ui.inverted.selection.menu>.item:hover{color:rgba(255,255,255,.9)}.ui.inverted.selection.menu>.item.active{color:#FFF}.ui.floated.menu{float:left;margin:0 .5rem 0 0}.ui.right.floated.menu{float:right;margin:0 0 0 .5rem}.ui.grey.menu{background-color:#F0F0F0}.ui.inverted.green.menu{background-color:#A1CF64}.ui.inverted.green.pointing.menu .active.item:after{background-color:#B3D782}.ui.inverted.red.menu{background-color:#D95C5C}.ui.inverted.red.pointing.menu .active.item:after{background-color:#DF7C7C}.ui.inverted.blue.menu{background-color:#6ECFF5}.ui.inverted.blue.pointing.menu .active.item:after{background-color:#8AD7F6}.ui.inverted.purple.menu{background-color:#564F8A}.ui.inverted.purple.pointing.menu .active.item:after{background-color:#7771A0}.ui.inverted.orange.menu{background-color:#F05940}.ui.inverted.orange.pointing.menu .active.item:after{background-color:#F27966}.ui.inverted.teal.menu{background-color:#00B5AD}.ui.inverted.teal.pointing.menu .active.item:after{background-color:#33C3BC}.ui.fitted.menu .item,.ui.fitted.menu .item .menu .item,.ui.menu .fitted.item{padding:0}.ui.horizontally.fitted.menu .item,.ui.horizontally.fitted.menu .item .menu .item,.ui.menu .horizontally.fitted.item{padding-top:.83em;padding-bottom:.83em}.ui.menu .vertically.fitted.item,.ui.vertically.fitted.menu .item,.ui.vertically.fitted.menu .item .menu .item{padding-left:.95em;padding-right:.95em}.ui.borderless.menu .item .menu .item:before,.ui.borderless.menu .item:before,.ui.menu .borderless.item:before{background-image:none}.ui.compact.menu{display:inline-block;margin:0;vertical-align:middle}.ui.compact.vertical.menu{width:auto!important}.ui.compact.vertical.menu .item:last-child::before{display:block}.ui.menu.fluid,.ui.vertical.menu.fluid{display:block;width:100%!important}.ui.item.menu,.ui.item.menu .item{width:100%;padding-left:0!important;padding-right:0!important;text-align:center}.ui.menu.two.item .item{width:50%}.ui.menu.three.item .item{width:33.333%}.ui.menu.four.item .item{width:25%}.ui.menu.five.item .item{width:20%}.ui.menu.six.item .item{width:16.666%}.ui.menu.seven.item .item{width:14.285%}.ui.menu.eight.item .item{width:12.5%}.ui.menu.nine.item .item{width:11.11%}.ui.menu.ten.item .item{width:10%}.ui.menu.eleven.item .item{width:9.09%}.ui.menu.twelve.item .item{width:8.333%}.ui.menu.fixed{position:fixed;z-index:999;margin:0;border:none;width:100%}.ui.menu.fixed,.ui.menu.fixed .item:first-child,.ui.menu.fixed .item:last-child{border-radius:0!important}.ui.menu.fixed.top{top:0;left:0;right:auto;bottom:auto}.ui.menu.fixed.right{top:0;right:0;left:auto;bottom:auto;width:auto;height:100%}.ui.menu.fixed.bottom{bottom:0;left:0;top:auto;right:auto}.ui.menu.fixed.left{top:0;left:0;right:auto;bottom:auto;width:auto;height:100%}.ui.fixed.menu+.ui.grid{padding-top:2.75rem}.ui.pointing.menu .active.item:after{position:absolute;bottom:-.3em;left:50%;content:"";margin-left:-.3em;width:.6em;height:.6em;border:none;border-bottom:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1);background-image:none;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-transition:background .2s ease;-moz-transition:background .2s ease;transition:background .2s ease}.ui.pointing.menu .active.item .menu .active.item:after{display:none}.ui.vertical.pointing.menu .active.item:after{position:absolute;top:50%;margin-top:-.3em;right:-.4em;bottom:auto;left:auto;border:none;border-top:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1)}.ui.pointing.menu .active.item:after{background-color:#FCFCFC}.ui.pointing.menu .active.item:hover:after{background-color:#FAFAFA}.ui.vertical.pointing.menu .menu .active.item:after{background-color:#F4F4F4}.ui.pointing.menu a.active.item:active:after{background-color:#F0F0F0}.ui.menu.attached{margin:0;border-radius:0;-webkit-box-shadow:0 0 0 1px #DDD;box-shadow:0 0 0 1px #DDD}.ui.top.attached.menu{border-radius:.1875em .1875em 0 0}.ui.menu.bottom.attached{border-radius:0 0 .1875em .1875em}.ui.small.menu .item{font-size:.875rem}.ui.small.vertical.menu{width:13rem}.ui.menu .item{font-size:1rem}.ui.vertical.menu{width:15rem}.ui.large.menu .item{font-size:1.125rem}.ui.large.menu .item .item{font-size:.875rem}.ui.large.menu .dropdown .item{font-size:1rem}.ui.large.vertical.menu{width:18rem}.ui.message{position:relative;min-height:18px;margin:1em 0;height:auto;background-color:#EFEFEF;padding:1em;line-height:1.33;color:rgba(0,0,0,.6);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;-moz-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:.325em}.ui.message:first-child{margin-top:0}.ui.message:last-child{margin-bottom:0}.ui.message .header{margin:0;font-size:1.33em;font-weight:700}.ui.message p{opacity:.85;margin:1em 0}.ui.message p:first-child{margin-top:0}.ui.message p:last-child{margin-bottom:0}.ui.message .header+p{margin-top:.3em}.ui.message>:first-child{margin-top:0}.ui.message>:last-child{margin-bottom:0}.ui.message ul.list{opacity:.85;list-style-position:inside;margin:.2em 0;padding:0}.ui.message ul.list li{position:relative;list-style-type:none;margin:0 0 .3em 1em;padding:0}.ui.message ul.list li:before{position:absolute;content:'\2022';top:-.05em;left:-.8em;height:100%;vertical-align:baseline;opacity:.5}.ui.message ul.list li:first-child{margin-top:0}.ui.message>.close.icon{cursor:pointer;position:absolute;right:0;top:0;width:2.5em;height:2.5em;opacity:.7;padding:.75em 0 0 .75em;-webkit-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;z-index:10}.ui.message>.close.icon:hover{opacity:1}.ui.message.visible{display:block!important}.ui.icon.message.animating,.ui.icon.message.visible{display:table!important}.ui.message.hidden{display:none!important}.ui.compact.message{display:inline-block}.ui.attached.message{margin-left:-1px;margin-right:-1px;margin-bottom:-1px;border-radius:.325em .325em 0 0;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset}.ui.attached+.ui.attached.message:not(.top):not(.bottom){margin-top:-1px;border-radius:0}.ui.bottom.attached.message{margin-top:-1px;border-radius:0 0 .325em .325em}.ui.bottom.attached.message:not(:last-child){margin-bottom:1em}.ui.attached.icon.message{display:block;width:auto}.ui.icon.message{display:table;width:100%}.ui.icon.message>.icon:not(.close){display:table-cell;vertical-align:middle;font-size:3.8em;opacity:.5}.ui.icon.message>.icon+.content{padding-left:1em}.ui.icon.message>.content{display:table-cell;vertical-align:middle}.ui.inverted.message{background-color:rgba(255,255,255,.05);color:rgba(255,255,255,.95)}.ui.floating.message{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 0 0 1px rgba(0,0,0,.05) inset;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 0 0 1px rgba(0,0,0,.05) inset}.ui.black.message{background-color:#333;color:rgba(255,255,255,.95)}.ui.blue.message,.ui.info.message{background-color:#E6F4F9;color:#4D8796}.ui.green.message{background-color:#DEFCD5;color:#52A954}.ui.warning.message,.ui.yellow.message{background-color:#F6F3D5;color:#96904D}.ui.red.message{background-color:#F1D7D7;color:#A95252}.ui.positive.message,.ui.success.message{background-color:#DEFCD5;color:#52A954}.ui.error.message,.ui.negative.message{background-color:#F1D7D7;color:#A95252}.ui.small.message{font-size:.875em}.ui.message{font-size:1em}.ui.large.message{font-size:1.125em}.ui.huge.message{font-size:1.5em}.ui.massive.message{font-size:2em}.ui.table{width:100%;border-collapse:collapse}.ui.table td,.ui.table th,.ui.table tr{border-collapse:collapse;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .1s ease-out;-moz-transition:all .1s ease-out;transition:all .1s ease-out}.ui.table thead{border-bottom:1px solid rgba(0,0,0,.03)}.ui.table tfoot th{background-color:rgba(0,0,0,.03)}.ui.table th{cursor:auto;background-color:rgba(0,0,0,.05);text-align:left;color:rgba(0,0,0,.8);padding:.5em .7em;vertical-align:middle}.ui.table thead th:first-child{border-radius:5px 0 0}.ui.table thead th:last-child{border-radius:0 5px 0 0}.ui.table tfoot th:first-child{border-radius:0 0 0 5px}.ui.table tfoot th:last-child{border-radius:0 0 5px}.ui.table tfoot th:only-child{border-radius:0 0 5px 5px}.ui.table td{padding:.4em .7em;vertical-align:middle}.ui.table tfoot{border-top:1px solid rgba(0,0,0,.03)}.ui.table tfoot th{font-weight:400;font-style:italic}.ui.table tbody tr:nth-child(2n){background-color:rgba(0,0,50,.02)}.ui.table>.icon{vertical-align:baseline}.ui.table>.icon:only-child{margin:0}.ui.table.segment:after{display:none}.ui.table.segment.stacked:after{display:block}@media only screen and (max-width:768px){.ui.table{display:block;padding:0}.ui.table tfoot,.ui.table thead{display:none}.ui.table tbody,.ui.table tr{display:block}.ui.table tr>td{width:100%!important;display:block;border:none!important;padding:.25em .75em;-webkit-box-shadow:0 1px 0 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 0 0 rgba(0,0,0,.05)!important}.ui.table td:first-child{font-weight:700;padding-top:1em}.ui.table td:last-child{-webkit-box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important;box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important;padding-bottom:1em}.ui.table tr>td.active,.ui.table tr>td.error,.ui.table tr>td.negative,.ui.table tr>td.positive,.ui.table tr>td.warning{background-color:transparent!important}}.ui.sortable.table th.disabled:hover{cursor:auto;text-align:left;font-weight:700;color:#333;color:rgba(0,0,0,.8)}.ui.sortable.table thead th:hover{background-color:rgba(0,0,0,.13);color:rgba(0,0,0,.8)}.ui.inverted.sortable.table thead th:hover{background-color:rgba(255,255,255,.13);color:#fff}.ui.table td.positive,.ui.table tr.positive{-webkit-box-shadow:2px 0 0 #119000 inset;box-shadow:2px 0 0 #119000 inset}.ui.table td.positive,.ui.table tr.positive td{background-color:#F2F8F0!important;color:#119000!important}.ui.celled.table tr.positive:hover td,.ui.celled.table tr:hover td.positive,.ui.table td:hover.positive,.ui.table th:hover.positive,.ui.table tr.positive:hover td{background-color:#ECF5E9!important;color:#119000!important}.ui.table td.negative,.ui.table tr.negative{-webkit-box-shadow:2px 0 0 #CD2929 inset;box-shadow:2px 0 0 #CD2929 inset}.ui.table td.negative,.ui.table tr.negative td{background-color:#F9F4F4;color:#CD2929!important}.ui.celled.table tr.negative:hover td,.ui.celled.table tr:hover td.negative,.ui.table td:hover.negative,.ui.table th:hover.negative,.ui.table tr.negative:hover td{background-color:#F2E8E8;color:#CD2929}.ui.table td.error,.ui.table tr.error{-webkit-box-shadow:2px 0 0 #CD2929 inset;box-shadow:2px 0 0 #CD2929 inset}.ui.table td.error,.ui.table th.error,.ui.table tr.error td{background-color:#F9F4F4;color:#CD2929}.ui.celled.table tr.error:hover td,.ui.celled.table tr:hover td.error,.ui.table td:hover.error,.ui.table th:hover.error,.ui.table tr.error:hover td{background-color:#F2E8E8;color:#CD2929}.ui.table td.warning,.ui.table tr.warning{-webkit-box-shadow:2px 0 0 #7D6C00 inset;box-shadow:2px 0 0 #7D6C00 inset}.ui.table td.warning,.ui.table th.warning,.ui.table tr.warning td{background-color:#FBF6E9;color:#7D6C00}.ui.celled.table tr.warning:hover td,.ui.celled.table tr:hover td.warning,.ui.table td:hover.warning,.ui.table th:hover.warning,.ui.table tr.warning:hover td{background-color:#F3EDDC;color:#7D6C00}.ui.table td.active,.ui.table tr.active{-webkit-box-shadow:2px 0 0 rgba(50,50,50,.9) inset;box-shadow:2px 0 0 rgba(50,50,50,.9) inset}.ui.table tr td.active,.ui.table tr.active td{background-color:#E0E0E0;color:rgba(50,50,50,.9)}.ui.table tr td.disabled,.ui.table tr.disabled td,.ui.table tr.disabled:hover td,.ui.table tr:hover td.disabled{color:rgba(150,150,150,.3)}.ui.column.table{table-layout:fixed}.ui.two.column.table td{width:50%}.ui.three.column.table td{width:33.3333%}.ui.four.column.table td{width:25%}.ui.five.column.table td{width:20%}.ui.six.column.table td{width:16.66667%}.ui.seven.column.table td{width:14.2857%}.ui.eight.column.table td{width:12.5%}.ui.nine.column.table td{width:11.1111%}.ui.ten.column.table td{width:10%}.ui.eleven.column.table td{width:9.0909%}.ui.twelve.column.table td{width:8.3333%}.ui.thirteen.column.table td{width:7.6923%}.ui.fourteen.column.table td{width:7.1428%}.ui.fifteen.column.table td{width:6.6666%}.ui.sixteen.column.table td,.ui.table td.one.wide,.ui.table th.one.wide{width:6.25%}.ui.table td.two.wide,.ui.table th.two.wide{width:12.5%}.ui.table td.three.wide,.ui.table th.three.wide{width:18.75%}.ui.table td.four.wide,.ui.table th.four.wide{width:25%}.ui.table td.five.wide,.ui.table th.five.wide{width:31.25%}.ui.table td.six.wide,.ui.table th.six.wide{width:37.5%}.ui.table td.seven.wide,.ui.table th.seven.wide{width:43.75%}.ui.table td.eight.wide,.ui.table th.eight.wide{width:50%}.ui.table td.nine.wide,.ui.table th.nine.wide{width:56.25%}.ui.table td.ten.wide,.ui.table th.ten.wide{width:62.5%}.ui.table td.eleven.wide,.ui.table th.eleven.wide{width:68.75%}.ui.table td.twelve.wide,.ui.table th.twelve.wide{width:75%}.ui.table td.thirteen.wide,.ui.table th.thirteen.wide{width:81.25%}.ui.table td.fourteen.wide,.ui.table th.fourteen.wide{width:87.5%}.ui.table td.fifteen.wide,.ui.table th.fifteen.wide{width:93.75%}.ui.table td.sixteen.wide,.ui.table th.sixteen.wide{width:100%}.ui.celled.table{color:rgba(0,0,0,.8)}.ui.celled.table tbody tr,.ui.celled.table tfoot tr{border:none}.ui.celled.table td,.ui.celled.table th{border:1px solid rgba(0,0,0,.1)}.ui.celled.table.segment td:first-child,.ui.celled.table.segment th:first-child{border-left:none}.ui.celled.table.segment td:last-child,.ui.celled.table.segment th:last-child{border-right:none}.ui.sortable.table thead th{cursor:pointer;white-space:nowrap}.ui.sortable.table thead th.sorted,.ui.sortable.table thead th.sorted:hover{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.sortable.table thead th:after{display:inline-block;content:'';width:1em;opacity:.8;margin:0 0 0 .5em;font-family:Icons;font-style:normal;font-weight:400;text-decoration:inherit}.ui.sortable.table thead th.ascending:after{content:'\25b4'}.ui.sortable.table thead th.descending:after{content:'\25be'}.ui.inverted.table td{color:rgba(255,255,255,.9)}.ui.inverted.table th{background-color:rgba(0,0,0,.15);color:rgba(255,255,255,.9)}.ui.inverted.table tbody tr:nth-child(2n){background-color:rgba(255,255,255,.06)}.ui.definition.table td:first-child{font-weight:700}.ui.collapsing.table{width:auto}.ui.basic.table th{background-color:transparent;padding:.5em}.ui.basic.table tbody tr{border-bottom:1px solid rgba(0,0,0,.03)}.ui.basic.table td{padding:.8em .5em}.ui.basic.table tbody tr:nth-child(2n){background-color:transparent!important}.ui.padded.table td,.ui.padded.table th{padding:.8em 1em}.ui.compact.table th{padding:.3em .5em}.ui.compact.table td{padding:.2em .5em}.ui.small.table{font-size:.875em}.ui.table{font-size:1em}.ui.large.table{font-size:1.1em}@font-face{font-family:'Basic Icons';src:url(../fonts/basic.icons.eot);src:url(../fonts/basic.icons.eot?#iefix) format('embedded-opentype'),url(../fonts/basic.icons.svg#basic.icons) format('svg'),url(../fonts/basic.icons.woff) format('woff'),url(../fonts/basic.icons.ttf) format('truetype');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.basic.icon{display:inline-block;opacity:.75;margin:0 .25em 0 0;width:1.23em;height:1em;font-family:'Basic Icons';font-style:normal;line-height:1;font-weight:400;text-decoration:inherit;text-align:center;speak:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;font-smoothing:antialiased}i.basic.icon.circle.attention:before{content:'\2757'}i.basic.icon.circle.help:before{content:'\e704'}i.basic.icon.circle.info:before{content:'\e705'}i.basic.icon.add:before{content:'\2795'}i.basic.icon.chart:before{content:'📈'}i.basic.icon.chart.bar:before{content:'📊'}i.basic.icon.chart.pie:before{content:'\e7a2'}i.basic.icon.resize.full:before{content:'\e744'}i.basic.icon.resize.horizontal:before{content:'\2b0d'}i.basic.icon.resize.small:before{content:'\e746'}i.basic.icon.resize.vertical:before{content:'\2b0c'}i.basic.icon.down:before{content:'\2193'}i.basic.icon.down.triangle:before{content:'\25be'}i.basic.icon.down.arrow:before{content:'\e75c'}i.basic.icon.left:before{content:'\2190'}i.basic.icon.left.triangle:before{content:'\25c2'}i.basic.icon.left.arrow:before{content:'\e75d'}i.basic.icon.right:before{content:'\2192'}i.basic.icon.right.triangle:before{content:'\25b8'}i.basic.icon.right.arrow:before{content:'\e75e'}i.basic.icon.up:before{content:'\2191'}i.basic.icon.up.triangle:before{content:'\25b4'}i.basic.icon.up.arrow:before{content:'\e75f'}i.basic.icon.folder:before{content:'\e810'}i.basic.icon.open.folder:before{content:'📂'}i.basic.icon.desk.globe:before{content:'🌐'}i.basic.icon.star:before{content:'\e801'}i.basic.icon.star.empty:before{content:'\e800'}i.basic.icon.star.half:before{content:'\e701'}i.basic.icon.lock:before{content:'🔒'}i.basic.icon.unlock:before{content:'🔓'}i.basic.icon.layout.grid:before{content:'\e80c'}i.basic.icon.layout.block:before{content:'\e708'}i.basic.icon.layout.list:before{content:'\e80b'}i.basic.icon.heart.empty:before{content:'\2661'}i.basic.icon.heart:before{content:'\2665'}i.basic.icon.asterisk:before{content:'\2731'}i.basic.icon.attachment:before{content:'📎'}i.basic.icon.attention:before{content:'\26a0'}i.basic.icon.trophy:before{content:'🏉'}i.basic.icon.barcode:before{content:'\e792'}i.basic.icon.cart:before{content:'\e813'}i.basic.icon.block:before{content:'🚫'}i.basic.icon.book:before{content:'📖'}i.basic.icon.bookmark:before{content:'🔖'}i.basic.icon.calendar:before{content:'📅'}i.basic.icon.cancel:before{content:'\2716'}i.basic.icon.close:before{content:'\e80d'}i.basic.icon.color:before{content:'\e794'}i.basic.icon.chat:before{content:'\e720'}i.basic.icon.check:before{content:'\2611'}i.basic.icon.time:before{content:'🕔'}i.basic.icon.cloud:before{content:'\2601'}i.basic.icon.code:before{content:'\e714'}i.basic.icon.email:before{content:'\40'}i.basic.icon.settings:before{content:'\26ef'}i.basic.icon.setting:before{content:'\2699'}i.basic.icon.comment:before{content:'\e802'}i.basic.icon.clockwise.counter:before{content:'\27f2'}i.basic.icon.clockwise:before{content:'\27f3'}i.basic.icon.cube:before{content:'\e807'}i.basic.icon.direction:before{content:'\27a2'}i.basic.icon.doc:before{content:'📄'}i.basic.icon.docs:before{content:'\e736'}i.basic.icon.dollar:before{content:'💵'}i.basic.icon.paint:before{content:'\e7b5'}i.basic.icon.edit:before{content:'\270d'}i.basic.icon.eject:before{content:'\2ecf'}i.basic.icon.export:before{content:'\e715'}i.basic.icon.hide:before{content:'\e70b'}i.basic.icon.unhide:before{content:'\e80f'}i.basic.icon.facebook:before{content:'\f301'}i.basic.icon.fast-forward:before{content:'\e804'}i.basic.icon.fire:before{content:'🔥'}i.basic.icon.flag:before{content:'\2691'}i.basic.icon.lightning:before{content:'\26a1'}i.basic.icon.lab:before{content:'\68'}i.basic.icon.flight:before{content:'\2708'}i.basic.icon.forward:before{content:'\27a6'}i.basic.icon.gift:before{content:'🎁'}i.basic.icon.github:before{content:'\f308'}i.basic.icon.globe:before{content:'\e817'}i.basic.icon.headphones:before{content:'🎧'}i.basic.icon.question:before{content:'\2753'}i.basic.icon.home:before{content:'\2302'}i.basic.icon.i:before{content:'\2139'}i.basic.icon.idea:before{content:'💡'}i.basic.icon.open:before{content:'🔗'}i.basic.icon.content:before{content:'\e782'}i.basic.icon.location:before{content:'\e724'}i.basic.icon.mail:before{content:'\2709'}i.basic.icon.mic:before{content:'🎤'}i.basic.icon.minus:before{content:'\2d'}i.basic.icon.money:before{content:'💰'}i.basic.icon.off:before{content:'\e78e'}i.basic.icon.pause:before{content:'\e808'}i.basic.icon.photos:before{content:'\e812'}i.basic.icon.photo:before{content:'🌄'}i.basic.icon.pin:before{content:'📌'}i.basic.icon.play:before{content:'\e809'}i.basic.icon.plus:before{content:'\2b'}i.basic.icon.print:before{content:'\e716'}i.basic.icon.rss:before{content:'\e73a'}i.basic.icon.search:before{content:'🔍'}i.basic.icon.shuffle:before{content:'\e803'}i.basic.icon.tag:before{content:'\e80a'}i.basic.icon.tags:before{content:'\e70d'}i.basic.icon.terminal:before{content:'\e7ac'}i.basic.icon.thumbs.down:before{content:'👎'}i.basic.icon.thumbs.up:before{content:'👍'}i.basic.icon.to-end:before{content:'\e806'}i.basic.icon.to-start:before{content:'\e805'}i.basic.icon.top.list:before{content:'🏆'}i.basic.icon.trash:before{content:'\e729'}i.basic.icon.twitter:before{content:'\f303'}i.basic.icon.upload:before{content:'\e711'}i.basic.icon.user.add:before{content:'\e700'}i.basic.icon.user:before{content:'👤'}i.basic.icon.community:before{content:'\e814'}i.basic.icon.users:before{content:'👥'}i.basic.icon.id:before{content:'\e722'}i.basic.icon.url:before{content:'🔗'}i.basic.icon.zoom.in:before{content:'\e750'}i.basic.icon.zoom.out:before{content:'\e751'}i.dropdown.basic.icon{margin:0 0 0 .5em}i.basic.icon.star{width:auto;margin:0}i.basic.icon.left{width:auto;margin:0 .5em 0 0}i.basic.icon.down,i.basic.icon.right,i.basic.icon.search,i.basic.icon.up{width:auto;margin:0 0 0 .5em}i.basic.icon.delete:before{content:'\e80d'}i.basic.icon.dropdown:before{content:'\25be'}i.basic.icon.help:before{content:'\e704'}i.basic.icon.info:before{content:'\e705'}i.basic.icon.error:before{content:'\e80d'}i.basic.icon.dislike:before{content:'\2661'}i.basic.icon.like:before{content:'\2665'}i.basic.icon.eye:before{content:'\e80f'}i.basic.icon.eye.hidden:before{content:'\e70b'}i.basic.icon.date:before{content:'📅'}i.basic.icon.active,i.basic.icon.hover,i.emphasized.basic.icon{opacity:1}i.basic.icon.disabled{opacity:.3}i.link.basic.icon{cursor:pointer;opacity:.7;-webkit-transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.link.basic.icon:hover{opacity:1!important}i.circular.basic.icon{border-radius:500px!important;padding:.5em 0!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;line-height:1!important;width:2em!important;height:2em!important}i.circular.inverted.basic.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.vertically.flipped.basic.icon{-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}i.horizontally.flipped.basic.icon{-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}i.left.rotated.basic.icon{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}i.right.rotated.basic.icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}i.square.basic.icon{width:2em;height:2em;padding:.5em .35em!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;vertical-align:baseline}i.square.basic.icon:before{vertical-align:middle}i.square.inverted.basic.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.inverted.basic.icon{background-color:#222;color:#FFF}i.blue.basic.icon{color:#6ECFF5!important}i.black.basic.icon{color:#5C6166!important}i.green.basic.icon{color:#A1CF64!important}i.red.basic.icon{color:#D95C5C!important}i.purple.basic.icon{color:#564F8A!important}i.teal.basic.icon{color:#00B5AD!important}i.inverted.black.basic.icon{background-color:#5C6166!important;color:#FFF!important}i.inverted.blue.basic.icon{background-color:#6ECFF5!important;color:#FFF!important}i.inverted.green.basic.icon{background-color:#A1CF64!important;color:#FFF!important}i.inverted.red.basic.icon{background-color:#D95C5C!important;color:#FFF!important}i.inverted.purple.basic.icon{background-color:#564F8A!important;color:#FFF!important}i.inverted.teal.basic.icon{background-color:#00B5AD!important;color:#FFF!important}i.small.basic.icon{font-size:.875em}i.basic.icon{font-size:1em}i.large.basic.icon{font-size:1.5em;margin-right:.2em;vertical-align:middle}i.big.basic.icon{font-size:2em;margin-right:.5em;vertical-align:middle}i.huge.basic.icon{font-size:4em;margin-right:.75em;vertical-align:middle}i.massive.basic.icon{font-size:8em;margin-right:1em;vertical-align:middle}.ui.button{cursor:pointer;display:inline-block;vertical-align:middle;min-height:1em;outline:0;border:none;background-color:#FAFAFA;color:gray;margin:0;padding:.8em 1.5em;text-transform:uppercase;line-height:1;font-weight:700;font-style:normal;text-align:center;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.05)));background-image:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.05));background-image:-moz-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.05));background-image:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.05));border-radius:.25em;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.08) inset;box-shadow:0 0 0 1px rgba(0,0,0,.08) inset;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-transition:opacity .25s ease,background-color .25s ease,color .25s ease,background .25s ease,-webkit-box-shadow .25s ease;-moz-transition:opacity .25s ease,background-color .25s ease,color .25s ease,background .25s ease,box-shadow .25s ease;transition:opacity .25s ease,background-color .25s ease,color .25s ease,background .25s ease,box-shadow .25s ease}.ui.active.button,.ui.buttons .active.button{background-color:#EAEAEA;background-image:none;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05) inset!important;box-shadow:0 0 0 1px rgba(0,0,0,.05) inset!important;color:rgba(0,0,0,.7)}.ui.button:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.08)));background-image:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.08));background-image:-moz-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.08));background-image:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.08));color:rgba(0,0,0,.7)}.ui.button.active:hover{background-image:none}.ui.button.hover .icon,.ui.button:hover .icon{opacity:.85}.ui.active.button:active,.ui.button:active{background-color:#F1F1F1;color:rgba(0,0,0,.7);-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05) inset!important;box-shadow:0 0 0 1px rgba(0,0,0,.05) inset!important}.ui.loading.button{position:relative;cursor:default;background-color:#FFF!important;color:transparent!important;-webkit-transition:all 0s linear;-moz-transition:all 0s linear;transition:all 0s linear}.ui.loading.button:after{position:absolute;top:0;left:0;width:100%;height:100%;content:'';background:url(../images/loader-mini.gif) 50% 50% no-repeat}.ui.labeled.icon.loading.button .icon{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.ui.disabled.button,.ui.disabled.button.active,.ui.disabled.button:hover{background-color:#DDD!important;cursor:default;color:rgba(0,0,0,.5)!important;opacity:.3!important;background-image:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.animated.button{position:relative;overflow:hidden}.ui.animated.button .visible.content{position:relative}.ui.animated.button .hidden.content{position:absolute;width:100%}.ui.animated.button .hidden.content,.ui.animated.button .visible.content{-webkit-transition:right .3s ease 0s;-moz-transition:right .3s ease 0s;transition:right .3s ease 0s}.ui.animated.button .visible.content{left:auto;right:0}.ui.animated.button .hidden.content{top:50%;left:auto;right:-100%;margin-top:-.55em}.ui.animated.button:hover .visible.content{left:auto;right:200%}.ui.animated.button:hover .hidden.content{left:auto;right:0}.ui.vertical.animated.button .hidden.content,.ui.vertical.animated.button .visible.content{-webkit-transition:top .3s ease 0s,-webkit-transform .3s ease 0s;-moz-transition:top .3s ease 0s,-moz-transform .3s ease 0s;transition:top .3s ease 0s,transform .3s ease 0s}.ui.vertical.animated.button .visible.content{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);right:auto}.ui.vertical.animated.button .hidden.content{top:-100%;left:0;right:auto}.ui.vertical.animated.button:hover .visible.content{-webkit-transform:translateY(200%);-moz-transform:translateY(200%);-ms-transform:translateY(200%);transform:translateY(200%);right:auto}.ui.vertical.animated.button:hover .hidden.content{top:50%;right:auto}.ui.fade.animated.button .hidden.content,.ui.fade.animated.button .visible.content{-webkit-transition:opacity .3s ease 0s,-webkit-transform .3s ease 0s;-moz-transition:opacity .3s ease 0s,-moz-transform .3s ease 0s;transition:opacity .3s ease 0s,transform .3s ease 0s}.ui.fade.animated.button .visible.content{left:auto;right:auto;opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.ui.fade.animated.button .hidden.content{opacity:0;left:0;right:auto;-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.ui.fade.animated.button:hover .visible.content{left:auto;right:auto;opacity:0;-webkit-transform:scale(0.7);-moz-transform:scale(0.7);-ms-transform:scale(0.7);transform:scale(0.7)}.ui.fade.animated.button:hover .hidden.content{left:0;right:auto;opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.ui.primary.button,.ui.primary.buttons .button{background-color:#D95C5C;color:#FFF}.ui.primary.button.active,.ui.primary.button:hover,.ui.primary.buttons .active.button,.ui.primary.buttons .button:hover{background-color:#E75859;color:#FFF}.ui.primary.button:active,.ui.primary.buttons .button:active{background-color:#D24B4C;color:#FFF}.ui.secondary.button,.ui.secondary.buttons .button{background-color:#00B5AD;color:#FFF}.ui.secondary.button.active,.ui.secondary.button:hover,.ui.secondary.buttons .active.button,.ui.secondary.buttons .button:hover{background-color:#009A93;color:#FFF}.ui.secondary.button:active,.ui.secondary.buttons .button:active{background-color:#00847E;color:#FFF}.ui.facebook.button{background-color:#3B579D;color:#FFF}.ui.facebook.button:hover{background-color:#3A59A9;color:#FFF}.ui.facebook.button:active{background-color:#334F95;color:#FFF}.ui.twitter.button{background-color:#4092CC;color:#FFF}.ui.twitter.button:hover{background-color:#399ADE;color:#FFF}.ui.twitter.button:active{background-color:#3283BC;color:#FFF}.ui.google.plus.button{background-color:#D34836;color:#FFF}.ui.google.plus.button:hover{background-color:#E3432E;color:#FFF}.ui.google.plus.button:active{background-color:#CA3A27;color:#FFF}.ui.linkedin.button{background-color:#1F88BE;color:#FFF}.ui.linkedin.button:hover{background-color:#1394D6;color:#FFF}.ui.linkedin.button:active{background-color:#1179AE;color:#FFF}.ui.youtube.button{background-color:#CC181E;color:#FFF}.ui.youtube.button:hover{background-color:#DF0209;color:#FFF}.ui.youtube.button:active{background-color:#A50006;color:#FFF}.ui.instagram.button{background-color:#49769C;color:#FFF}.ui.instagram.button:hover{background-color:#4781B1;color:#FFF}.ui.instagram.button:active{background-color:#38658A;color:#FFF}.ui.pinterest.button{background-color:#00ACED;color:#FFF}.ui.pinterest.button:hover{background-color:#00B9FF;color:#FFF}.ui.pinterest.button:active{background-color:#009EDA;color:#FFF}.ui.vk.button{background-color:#4D7198;color:#FFF}.ui.vk.button:hover{background-color:#537AA5;color:#FFF}.ui.vk.button:active{background-color:#405E7E;color:#FFF}.ui.button>.icon{margin-right:.6em;line-height:1;-webkit-transition:opacity .1s ease;-moz-transition:opacity .1s ease;transition:opacity .1s ease}.ui.left.floated.button,.ui.left.floated.buttons{float:left;margin-right:.25em}.ui.right.floated.button,.ui.right.floated.buttons{float:right;margin-left:.25em}.ui.button,.ui.buttons .button{font-size:1rem}.ui.mini.button,.ui.mini.buttons .button,.ui.mini.buttons .or{font-size:.8rem}.ui.mini.button,.ui.mini.buttons .button{padding:.6em .8em}.ui.mini.buttons .icon.button,.ui.mini.icon.buttons .button{padding:.6em}.ui.tiny.button,.ui.tiny.buttons .button,.ui.tiny.buttons .or{font-size:.875em}.ui.tiny.button,.ui.tiny.buttons .button{padding:.6em .8em}.ui.tiny.buttons .icon.button,.ui.tiny.icon.buttons .button{padding:.6em}.ui.small.button,.ui.small.buttons .button,.ui.small.buttons .or{font-size:.875rem}.ui.large.button,.ui.large.buttons .button,.ui.large.buttons .or{font-size:1.125rem}.ui.big.button,.ui.big.buttons .button,.ui.big.buttons .or{font-size:1.25rem}.ui.huge.button,.ui.huge.buttons .button,.ui.huge.buttons .or{font-size:1.375rem}.ui.massive.button,.ui.massive.buttons .button,.ui.massive.buttons .or{font-size:1.5rem;font-weight:700}.ui.mini.buttons .or:before,.ui.tiny.buttons .or:before{width:1.45em;height:1.55em;line-height:1.4;margin-left:-.725em;margin-top:-.25em}.ui.mini.buttons .or:after,.ui.tiny.buttons .or:after{height:1.45em}.ui.huge.loading.button.active:after,.ui.huge.loading.button:after{background-image:url(../images/loader-small.gif)}.ui.gigantic.buttons .loading.button.active:after,.ui.gigantic.buttons .loading.button:after,.ui.gigantic.loading.button.active:after,.ui.gigantic.loading.button:after,.ui.massive.buttons .loading.button.active:after,.ui.massive.buttons .loading.button:after,.ui.massive.loading.button.active:after,.ui.massive.loading.button:after{background-image:url(../images/loader-medium.gif)}.ui.icon.button,.ui.icon.buttons .button{padding:.8em}.ui.icon.button>.icon,.ui.icon.buttons .button>.icon{opacity:.9;margin:0;vertical-align:top}.ui.basic.button,.ui.basic.buttons .button{background-color:transparent!important;background-image:none;color:gray!important;font-weight:400;text-transform:none;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset}.ui.basic.buttons{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;border-radius:.25em}.ui.basic.button:hover,.ui.basic.buttons .button:hover{background-image:none;color:#7F7F7F!important;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.18) inset;box-shadow:0 0 0 1px rgba(0,0,0,.18) inset}.ui.basic.button:active,.ui.basic.buttons .button:active{background-color:rgba(0,0,0,.02)!important;color:#7F7F7F!important;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset}.ui.basic.button.active,.ui.basic.buttons .button.active{background-color:rgba(0,0,0,.05);color:#7F7F7F;-webkit-box-shadow:0 0 0 1px #BDBDBD inset;box-shadow:0 0 0 1px #BDBDBD inset}.ui.basic.button.active:hover,.ui.basic.buttons .button.active:hover{background-color:rgba(0,0,0,.1)}.ui.basic.inverted.button,.ui.basic.inverted.buttons .button{color:#FAFAFA!important;-webkit-box-shadow:0 0 0 1px rgba(255,255,255,.3) inset;box-shadow:0 0 0 1px rgba(255,255,255,.3) inset}.ui.basic.inverted.button:hover,.ui.basic.inverted.buttons .button:hover{background-image:none;color:#FFF!important;-webkit-box-shadow:0 0 0 1px rgba(255,255,255,.5) inset;box-shadow:0 0 0 1px rgba(255,255,255,.5) inset}.ui.basic.inverted.button:active,.ui.basic.inverted.buttons .button:active{background-color:rgba(255,255,255,.05)!important;color:#FFF!important;-webkit-box-shadow:0 0 0 1px rgba(255,255,255,.8) inset!important;box-shadow:0 0 0 1px rgba(255,255,255,.8) inset!important}.ui.basic.inverted.button.active,.ui.basic.inverted.buttons .button.active{background-color:rgba(255,255,255,.5);color:#FFF;-webkit-box-shadow:none;box-shadow:none}.ui.basic.inverted.button.active:hover,.ui.basic.inverted.buttons .button.active:hover{background-color:rgba(0,0,0,.1)}.ui.basic.buttons .button{border-left:1px solid rgba(0,0,0,.1);-webkit-box-shadow:none;box-shadow:none}.ui.basic.buttons .button:active,.ui.basic.buttons .button:hover{-webkit-box-shadow:none;box-shadow:none}.ui.basic.buttons .button.active,.ui.basic.buttons .button.active:hover{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,.2) inset}.ui.labeled.icon.button,.ui.labeled.icon.buttons .button{position:relative;padding-left:4em!important;padding-right:1.4em!important}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{position:absolute;top:0;left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;width:2.75em;height:100%;padding-top:.8em;background-color:rgba(0,0,0,.05);text-align:center;border-radius:.25em 0 0 .25em;line-height:1;-webkit-box-shadow:-1px 0 0 0 rgba(0,0,0,.05) inset;box-shadow:-1px 0 0 0 rgba(0,0,0,.05) inset}.ui.labeled.icon.buttons .button>.icon{border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.25em;border-bottom-left-radius:.25em}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.25em;border-bottom-right-radius:.25em}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{border-radius:.25em 0 0}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{border-radius:0 0 0 .25em}.ui.right.labeled.icon.button{padding-left:1.4em!important;padding-right:4em!important}.ui.left.fluid.labeled.icon.button,.ui.right.fluid.labeled.icon.button{padding-left:1.4em!important;padding-right:1.4em!important}.ui.right.labeled.icon.button .icon{left:auto;right:0;border-radius:0 .25em .25em 0;-webkit-box-shadow:1px 0 0 0 rgba(0,0,0,.05) inset;box-shadow:1px 0 0 0 rgba(0,0,0,.05) inset}.ui.button.toggle.active,.ui.buttons .button.toggle.active,.ui.toggle.buttons .active.button{background-color:#5BBD72!important;color:#FFF!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.button.toggle.active:hover{background-color:#58CB73!important;color:#FFF!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.circular.button{border-radius:10em}.ui.attached.button{display:block;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1)!important;box-shadow:0 0 0 1px rgba(0,0,0,.1)!important}.ui.attached.top.button{border-radius:.25em .25em 0 0}.ui.attached.bottom.button{border-radius:0 0 .25em .25em}.ui.attached.left.button{display:inline-block;border-left:none;padding-right:.75em;text-align:right;border-radius:.25em 0 0 .25em}.ui.attached.right.button{display:inline-block;padding-left:.75em;text-align:left;border-radius:0 .25em .25em 0}.ui.buttons .or{position:relative;float:left;width:.3em;height:1.1em;z-index:3}.ui.buttons .or:before{position:absolute;top:50%;left:50%;content:'or';background-color:#FFF;margin-top:-.1em;margin-left:-.9em;width:1.8em;height:1.8em;line-height:1.55;color:#AAA;font-style:normal;font-weight:400;text-align:center;border-radius:500px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.buttons .or[data-text]:before{content:attr(data-text)}.ui.buttons .or:after{position:absolute;top:0;left:0;content:' ';width:.3em;height:1.7em;background-color:transparent;border-top:.5em solid #FFF;border-bottom:.5em solid #FFF}.ui.fluid.buttons .or{width:0!important}.ui.fluid.buttons .or:after{display:none}.attached.ui.buttons{margin:0;border-radius:4px 4px 0 0}.attached.ui.buttons .button:first-child{border-radius:4px 0 0}.attached.ui.buttons .button:last-child{border-radius:0 4px 0 0}.bottom.attached.ui.buttons{margin-top:-1px;border-radius:0 0 4px 4px}.bottom.attached.ui.buttons .button:first-child{border-radius:0 0 0 4px}.bottom.attached.ui.buttons .button:last-child{border-radius:0 0 4px}.left.attached.ui.buttons{margin-left:-1px;border-radius:0 4px 4px 0}.left.attached.ui.buttons .button:first-child{margin-left:-1px;border-radius:0 4px 0 0}.left.attached.ui.buttons .button:last-child{margin-left:-1px;border-radius:0 0 4px}.right.attached.ui.buttons,.right.attached.ui.buttons .button{margin-right:-1px;border-radius:4px 0 0 4px}.right.attached.ui.buttons .button:first-child{margin-left:-1px;border-radius:4px 0 0}.right.attached.ui.buttons .button:last-child{margin-left:-1px;border-radius:0 0 0 4px}.ui.button.fluid,.ui.fluid.buttons,.ui.fluid.buttons>.button{display:block;width:100%}.ui.\32.buttons>.button,.ui.two.buttons>.button{width:50%}.ui.\33.buttons>.button,.ui.three.buttons>.button{width:33.333%}.ui.\34.buttons>.button,.ui.four.buttons>.button{width:25%}.ui.\35.buttons>.button,.ui.five.buttons>.button{width:20%}.ui.\36.buttons>.button,.ui.six.buttons>.button{width:16.666%}.ui.\37.buttons>.button,.ui.seven.buttons>.button{width:14.285%}.ui.\38.buttons>.button,.ui.eight.buttons>.button{width:12.5%}.ui.\39.buttons>.button,.ui.nine.buttons>.button{width:11.11%}.ui.\31\30.buttons>.button,.ui.ten.buttons>.button{width:10%}.ui.\31\31.buttons>.button,.ui.eleven.buttons>.button{width:9.09%}.ui.\31\32.buttons>.button,.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{display:block;width:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.\32.vertical.buttons>.button,.ui.two.vertical.buttons>.button{height:50%}.ui.\33.vertical.buttons>.button,.ui.three.vertical.buttons>.button{height:33.333%}.ui.\34.vertical.buttons>.button,.ui.four.vertical.buttons>.button{height:25%}.ui.\35.vertical.buttons>.button,.ui.five.vertical.buttons>.button{height:20%}.ui.\36.vertical.buttons>.button,.ui.six.vertical.buttons>.button{height:16.666%}.ui.\37.vertical.buttons>.button,.ui.seven.vertical.buttons>.button{height:14.285%}.ui.\38.vertical.buttons>.button,.ui.eight.vertical.buttons>.button{height:12.5%}.ui.\39.vertical.buttons>.button,.ui.nine.vertical.buttons>.button{height:11.11%}.ui.\31\30.vertical.buttons>.button,.ui.ten.vertical.buttons>.button{height:10%}.ui.\31\31.vertical.buttons>.button,.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.\31\32.vertical.buttons>.button,.ui.twelve.vertical.buttons>.button{height:8.3333%}.ui.black.button,.ui.black.buttons .button{background-color:#5C6166;color:#FFF}.ui.black.button:hover,.ui.black.buttons .button:hover{background-color:#4C4C4C;color:#FFF}.ui.black.button:active,.ui.black.buttons .button:active{background-color:#333;color:#FFF}.ui.green.button,.ui.green.buttons .button{background-color:#5BBD72;color:#FFF}.ui.green.button.active,.ui.green.button:hover,.ui.green.buttons .active.button,.ui.green.buttons .button:hover{background-color:#58cb73;color:#FFF}.ui.green.button:active,.ui.green.buttons .button:active{background-color:#4CB164;color:#FFF}.ui.red.button,.ui.red.buttons .button{background-color:#D95C5C;color:#FFF}.ui.red.button.active,.ui.red.button:hover,.ui.red.buttons .active.button,.ui.red.buttons .button:hover{background-color:#E75859;color:#FFF}.ui.red.button:active,.ui.red.buttons .button:active{background-color:#D24B4C;color:#FFF}.ui.orange.button,.ui.orange.buttons .button{background-color:#E96633;color:#FFF}.ui.orange.button.active,.ui.orange.button:hover,.ui.orange.buttons .active.button,.ui.orange.buttons .button:hover{background-color:#FF7038;color:#FFF}.ui.orange.button:active,.ui.orange.buttons .button:active{background-color:#DA683B;color:#FFF}.ui.blue.button,.ui.blue.buttons .button{background-color:#6ECFF5;color:#FFF}.ui.blue.button.active,.ui.blue.button:hover,.ui.blue.buttons .active.button,.ui.blue.buttons .button:hover{background-color:#1AB8F3;color:#FFF}.ui.blue.button:active,.ui.blue.buttons .button:active{background-color:#0AA5DF;color:#FFF}.ui.purple.button,.ui.purple.buttons .button{background-color:#564F8A;color:#FFF}.ui.purple.button.active,.ui.purple.button:hover,.ui.purple.buttons .active.button,.ui.purple.buttons .button:hover{background-color:#3E3773;color:#FFF}.ui.purple.button:active,.ui.purple.buttons .button:active{background-color:#2E2860;color:#FFF}.ui.teal.button,.ui.teal.buttons .button{background-color:#00B5AD;color:#FFF}.ui.teal.button.active,.ui.teal.button:hover,.ui.teal.buttons .active.button,.ui.teal.buttons .button:hover{background-color:#009A93;color:#FFF}.ui.teal.button:active,.ui.teal.buttons .button:active{background-color:#00847E;color:#FFF}.ui.positive.button,.ui.positive.buttons .button{background-color:#5BBD72!important;color:#FFF}.ui.positive.button.active,.ui.positive.button:hover,.ui.positive.buttons .active.button,.ui.positive.buttons .button:hover{background-color:#58CB73!important;color:#FFF}.ui.positive.button:active,.ui.positive.buttons .button:active{background-color:#4CB164!important;color:#FFF}.ui.negative.button,.ui.negative.buttons .button{background-color:#D95C5C!important;color:#FFF}.ui.negative.button.active,.ui.negative.button:hover,.ui.negative.buttons .active.button,.ui.negative.buttons .button:hover{background-color:#E75859!important;color:#FFF}.ui.negative.button:active,.ui.negative.buttons .button:active{background-color:#D24B4C!important;color:#FFF}.ui.buttons{display:inline-block;vertical-align:middle}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button:first-child{border-left:none}.ui.buttons .button{float:left;border-radius:0}.ui.buttons .button:first-child{margin-left:0;border-top-left-radius:.25em;border-bottom-left-radius:.25em}.ui.buttons .button:last-child{border-top-right-radius:.25em;border-bottom-right-radius:.25em}.ui.vertical.buttons{display:inline-block}.ui.vertical.buttons .button{display:block;float:none;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset}.ui.vertical.buttons .button:first-child,.ui.vertical.buttons .huge.button:first-child,.ui.vertical.buttons .massive.button:first-child,.ui.vertical.buttons .mini.button:first-child,.ui.vertical.buttons .small.button:first-child,.ui.vertical.buttons .tiny.button:first-child{margin-top:0;border-radius:.25em .25em 0 0}.ui.vertical.buttons .button:last-child,.ui.vertical.buttons .gigantic.button:last-child,.ui.vertical.buttons .huge.button:last-child,.ui.vertical.buttons .massive.button:last-child,.ui.vertical.buttons .mini.button:last-child,.ui.vertical.buttons .small.button:last-child,.ui.vertical.buttons .tiny.button:last-child{border-radius:0 0 .25em .25em}.ui.divider{margin:1rem 0;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.8);line-height:1;height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ui.horizontal.divider,.ui.vertical.divider{border:none;background-color:transparent;font-size:.875rem;font-weight:700;text-align:center;text-transform:uppercase;color:rgba(0,0,0,.8)}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0 0 0 -3%;width:6%;height:50%;line-height:0;padding:0}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:" ";z-index:3;border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(255,255,255,.8);width:0;height:80%}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}.ui.horizontal.divider{position:relative;top:0;left:0;margin:1rem 1.5rem;height:auto;padding:0;line-height:1}.ui.horizontal.divider:after,.ui.horizontal.divider:before{position:absolute;content:" ";z-index:3;width:50%;top:50%;height:0;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.8)}.ui.horizontal.divider:before{left:0;margin-left:-1.5rem}.ui.horizontal.divider:after{left:auto;right:0;margin-right:-1.5rem}.ui.divider>.icon{margin:0;font-size:1rem;vertical-align:middle}.ui.divider.inverted{color:#fff}.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:rgba(255,255,255,.9)}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(0,0,0,.15);border-bottom-color:rgba(255,255,255,.15);border-left-color:rgba(0,0,0,.15);border-right-color:rgba(255,255,255,.15)}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem}.ui.header{border:none;margin:1em 0 1rem;padding:0;font-size:1.33em;font-weight:700;line-height:1.33}.ui.header .sub.header{font-size:1rem;font-weight:400;margin:0;padding:0;line-height:1.2;color:rgba(0,0,0,.5)}.ui.header .icon{display:table-cell;vertical-align:middle;padding-right:.5em}.ui.header .icon:only-child{display:inline-block;vertical-align:baseline}.ui.header .content{display:inline-block;vertical-align:top}.ui.header .icon+.content{padding-left:.5em;display:table-cell}.ui.header:first-child{margin-top:0}.ui.header:last-child{margin-bottom:0}.ui.header+p{margin-top:0}h1.ui.header{min-height:1rem;line-height:1.33;font-size:2rem}h2.ui.header{line-height:1.33;font-size:1.75rem}h3.ui.header{line-height:1.33;font-size:1.33rem}h4.ui.header{line-height:1.33;font-size:1.1rem}h5.ui.header{line-height:1.2;font-size:1rem}.ui.huge.header{min-height:1em;font-size:2em}.ui.large.header{font-size:1.75em}.ui.medium.header{font-size:1.33em}.ui.small.header{font-size:1.1em}.ui.tiny.header{font-size:1em}.ui.icon.header{display:inline-block;text-align:center}.ui.icon.header .icon{float:none;display:block;font-size:3em;margin:0 auto .2em;padding:0}.ui.icon.header .content{display:block}.ui.icon.header .circular.icon,.ui.icon.header .square.icon{font-size:2em}.ui.block.icon.header .icon{margin-bottom:0}.ui.icon.header.aligned{margin-left:auto;margin-right:auto;display:block}.ui.disabled.header{opacity:.5}.ui.blue.header{color:#6ECFF5!important}.ui.black.header{color:#5C6166!important}.ui.green.header{color:#A1CF64!important}.ui.red.header{color:#D95C5C!important}.ui.purple.header{color:#564F8A!important}.ui.teal.header{color:#00B5AD!important}.ui.blue.dividing.header{border-bottom:3px solid #6ECFF5}.ui.black.dividing.header{border-bottom:3px solid #5C6166}.ui.green.dividing.header{border-bottom:3px solid #A1CF64}.ui.red.dividing.header{border-bottom:3px solid #D95C5C}.ui.purple.dividing.header{border-bottom:3px solid #564F8A}.ui.teal.dividing.header{border-bottom:3px solid #00B5AD}.ui.inverted.header{color:#FFF}.ui.inverted.header .sub.header{color:rgba(255,255,255,.85)}.ui.inverted.black.header{background-color:#5C6166!important;color:#FFF!important}.ui.inverted.blue.header{background-color:#6ECFF5!important;color:#FFF!important}.ui.inverted.green.header{background-color:#A1CF64!important;color:#FFF!important}.ui.inverted.red.header{background-color:#D95C5C!important;color:#FFF!important}.ui.inverted.purple.header{background-color:#564F8A!important;color:#FFF!important}.ui.inverted.teal.header{background-color:#00B5AD!important;color:#FFF!important}.ui.inverted.block.header{border-bottom:none}.ui.left.aligned.header{text-align:left}.ui.right.aligned.header{text-align:right}.ui.center.aligned.header{text-align:center}.ui.justified.header{text-align:justify}.ui.justified.header:after{display:inline-block;content:'';width:100%}.ui.floated.header,.ui.left.floated.header{float:left;margin-top:0;margin-right:.5em}.ui.right.floated.header{float:right;margin-top:0;margin-left:.5em}.ui.fitted.header{padding:0}.ui.dividing.header{padding-bottom:.2rem;border-bottom:1px solid rgba(0,0,0,.1)}.ui.dividing.header .sub.header{padding-bottom:.5em}.ui.dividing.header .icon{margin-bottom:.2em}.ui.block.header{background-color:rgba(0,0,0,.05);padding:.5em 1em}.ui.attached.header{background-color:#E0E0E0;padding:.5em 1rem;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1)}.ui.top.attached.header{margin-bottom:0;border-radius:.3125em .3125em 0 0}.ui.bottom.attached.header{margin-top:0;border-radius:0 0 .3125em .3125em}@font-face{font-family:Icons;src:url(../fonts/icons.eot);src:url(../fonts/icons.eot?#iefix) format('embedded-opentype'),url(../fonts/icons.svg#icons) format('svg'),url(../fonts/icons.woff) format('woff'),url(../fonts/icons.ttf) format('truetype');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon{display:inline-block;opacity:.75;margin:0 .25em 0 0;width:1.23em;height:1em;font-family:Icons;font-style:normal;line-height:1;font-weight:400;text-decoration:inherit;text-align:center;speak:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}i.icon.left:before{content:"\f060"}i.icon.right:before{content:"\f061"}i.icon.add.sign.box:before{content:"\f0fe"}i.icon.add.sign:before{content:"\f055"}i.icon.add:before{content:"\f067"}i.icon.adjust:before{content:"\f042"}i.icon.adn:before{content:"\f170"}i.icon.align.center:before{content:"\f037"}i.icon.align.justify:before{content:"\f039"}i.icon.align.left:before{content:"\f036"}i.icon.align.right:before{content:"\f038"}i.icon.ambulance:before{content:"\f0f9"}i.icon.anchor:before{content:"\f13d"}i.icon.android:before{content:"\f17b"}i.icon.angle.down:before{content:"\f107"}i.icon.angle.left:before{content:"\f104"}i.icon.angle.right:before{content:"\f105"}i.icon.angle.up:before{content:"\f106"}i.icon.apple:before{content:"\f179"}i.icon.archive:before{content:"\f187"}i.icon.arrow.down:before{content:"\f078"}i.icon.arrow.left:before{content:"\f053"}i.icon.arrow.right:before{content:"\f054"}i.icon.arrow.sign.down:before{content:"\f13a"}i.icon.arrow.sign.left:before{content:"\f137"}i.icon.arrow.sign.right:before{content:"\f138"}i.icon.arrow.sign.up:before{content:"\f139"}i.icon.arrow.up:before{content:"\f077"}i.icon.asterisk:before{content:"\f069"}i.icon.attachment:before{content:"\f0c6"}i.icon.attention:before{content:"\f06a"}i.icon.backward:before{content:"\f04a"}i.icon.ban.circle:before{content:"\f05e"}i.icon.bar.chart:before{content:"\f080"}i.icon.barcode:before{content:"\f02a"}i.icon.beer:before{content:"\f0fc"}i.icon.bell.outline:before{content:"\f0a2"}i.icon.bell:before{content:"\f0f3"}i.icon.bitbucket.sign:before{content:"\f172"}i.icon.bitbucket:before{content:"\f171"}i.icon.bitcoin:before{content:"\f15a"}i.icon.bold:before{content:"\f032"}i.icon.bolt:before{content:"\f0e7"}i.icon.book:before{content:"\f02d"}i.icon.bookmark.empty:before{content:"\f097"}i.icon.bookmark:before{content:"\f02e"}i.icon.box.arrow.down:before{content:"\f150"}i.icon.box.arrow.right:before{content:"\f152"}i.icon.box.arrow.up:before{content:"\f151"}i.icon.briefcase:before{content:"\f0b1"}i.icon.browser:before{content:"\f022"}i.icon.bug:before{content:"\f188"}i.icon.building:before{content:"\f0f7"}i.icon.bullhorn:before{content:"\f0a1"}i.icon.bullseye:before{content:"\f140"}i.icon.calendar.empty:before{content:"\f133"}i.icon.calendar:before{content:"\f073"}i.icon.camera.retro:before{content:"\f083"}i.icon.camera:before{content:"\f030"}i.icon.triangle.down:before{content:"\f0d7"}i.icon.triangle.left:before{content:"\f0d9"}i.icon.triangle.right:before{content:"\f0da"}i.icon.triangle.up:before{content:"\f0d8"}i.icon.cart:before{content:"\f07a"}i.icon.certificate:before{content:"\f0a3"}i.icon.chat.outline:before{content:"\f0e6"}i.icon.chat:before{content:"\f086"}i.icon.checkbox.empty:before{content:"\f096"}i.icon.checkbox.minus:before{content:"\f147"}i.icon.checked.checkbox:before{content:"\f046"}i.icon.checkmark.sign:before{content:"\f14a"}i.icon.checkmark:before{content:"\f00c"}i.icon.circle.blank:before{content:"\f10c"}i.icon.circle.down:before{content:"\f0ab"}i.icon.circle.left:before{content:"\f0a8"}i.icon.circle.right:before{content:"\f0a9"}i.icon.circle.up:before{content:"\f0aa"}i.icon.circle:before{content:"\f111"}i.icon.cloud.download:before{content:"\f0ed"}i.icon.cloud.upload:before{content:"\f0ee"}i.icon.cloud:before{content:"\f0c2"}i.icon.code.fork:before{content:"\f126"}i.icon.code:before{content:"\f121"}i.icon.coffee:before{content:"\f0f4"}i.icon.collapse:before{content:"\f117"}i.icon.comment.outline:before{content:"\f0e5"}i.icon.comment:before{content:"\f075"}i.icon.copy:before{content:"\f0c5"}i.icon.crop:before{content:"\f125"}i.icon.css3:before{content:"\f13c"}i.icon.cut:before{content:"\f0c4"}i.icon.dashboard:before{content:"\f0e4"}i.icon.desktop:before{content:"\f108"}i.icon.doctor:before{content:"\f0f0"}i.icon.dollar:before{content:"\f155"}i.icon.double.angle.down:before{content:"\f103"}i.icon.double.angle.left:before{content:"\f100"}i.icon.double.angle.right:before{content:"\f101"}i.icon.double.angle.up:before{content:"\f102"}i.icon.down:before{content:"\f063"}i.icon.download.disk:before{content:"\f019"}i.icon.download:before{content:"\f01a"}i.icon.dribbble:before{content:"\f17d"}i.icon.dropbox:before{content:"\f16b"}i.icon.edit.sign:before{content:"\f14b"}i.icon.edit:before{content:"\f044"}i.icon.eject:before{content:"\f052"}i.icon.ellipsis.horizontal:before{content:"\f141"}i.icon.ellipsis.vertical:before{content:"\f142"}i.icon.eraser:before{content:"\f12d"}i.icon.euro:before{content:"\f153"}i.icon.exchange:before{content:"\f0ec"}i.icon.exclamation:before{content:"\f12a"}i.icon.expand:before{content:"\f116"}i.icon.external.url.sign:before{content:"\f14c"}i.icon.external.url:before{content:"\f08e"}i.icon.facebook.sign:before{content:"\f082"}i.icon.facebook:before{content:"\f09a"}i.icon.facetime.video:before{content:"\f03d"}i.icon.fast.backward:before{content:"\f049"}i.icon.fast.forward:before{content:"\f050"}i.icon.female:before{content:"\f182"}i.icon.fighter.jet:before{content:"\f0fb"}i.icon.file.outline:before{content:"\f016"}i.icon.file.text.outline:before{content:"\f0f6"}i.icon.file.text:before{content:"\f15c"}i.icon.file:before{content:"\f15b"}i.icon.filter:before{content:"\f0b0"}i.icon.fire.extinguisher:before{content:"\f134"}i.icon.fire:before{content:"\f06d"}i.icon.flag.checkered:before{content:"\f11e"}i.icon.flag.empty:before{content:"\f11d"}i.icon.flag:before{content:"\f024"}i.icon.flickr:before{content:"\f16e"}i.icon.folder.open.outline:before{content:"\f115"}i.icon.folder.open:before{content:"\f07c"}i.icon.folder.outline:before{content:"\f114"}i.icon.folder:before{content:"\f07b"}i.icon.font:before{content:"\f031"}i.icon.food:before{content:"\f0f5"}i.icon.forward.mail:before{content:"\f064"}i.icon.forward:before{content:"\f04e"}i.icon.foursquare:before{content:"\f180"}i.icon.frown:before{content:"\f119"}i.icon.fullscreen:before{content:"\f0b2"}i.icon.gamepad:before{content:"\f11b"}i.icon.gift:before{content:"\f06b"}i.icon.github.alternate:before{content:"\f09b"}i.icon.github.sign:before{content:"\f092"}i.icon.github:before{content:"\f113"}i.icon.gittip:before{content:"\f184"}i.icon.glass:before{content:"\f000"}i.icon.globe:before{content:"\f0ac"}i.icon.google.plus.sign:before{content:"\f0d4"}i.icon.google.plus:before{content:"\f0d5"}i.icon.h.sign:before{content:"\f0fd"}i.icon.hand.down:before{content:"\f0a7"}i.icon.hand.left:before{content:"\f0a5"}i.icon.hand.right:before{content:"\f0a4"}i.icon.hand.up:before{content:"\f0a6"}i.icon.hdd:before{content:"\f0a0"}i.icon.headphones:before{content:"\f025"}i.icon.heart.empty:before{content:"\f08a"}i.icon.heart:before{content:"\f004"}i.icon.help:before{content:"\f059"}i.icon.hide:before{content:"\f070"}i.icon.home:before{content:"\f015"}i.icon.hospital:before{content:"\f0f8"}i.icon.html5:before{content:"\f13b"}i.icon.inbox:before{content:"\f01c"}i.icon.indent.left:before{content:"\f03b"}i.icon.indent.right:before{content:"\f03c"}i.icon.info.letter:before{content:"\f129"}i.icon.info:before{content:"\f05a"}i.icon.instagram:before{content:"\f16d"}i.icon.italic:before{content:"\f033"}i.icon.key:before{content:"\f084"}i.icon.keyboard:before{content:"\f11c"}i.icon.lab:before{content:"\f0c3"}i.icon.laptop:before{content:"\f109"}i.icon.layout.block:before{content:"\f009"}i.icon.layout.column:before{content:"\f0db"}i.icon.layout.grid:before{content:"\f00a"}i.icon.layout.list:before{content:"\f00b"}i.icon.leaf:before{content:"\f06c"}i.icon.legal:before{content:"\f0e3"}i.icon.lemon:before{content:"\f094"}i.icon.level.down:before{content:"\f149"}i.icon.level.up:before{content:"\f148"}i.icon.lightbulb:before{content:"\f0eb"}i.icon.linkedin.sign:before{content:"\f08c"}i.icon.linkedin:before{content:"\f0e1"}i.icon.linux:before{content:"\f17c"}i.icon.list.ordered:before{content:"\f0cb"}i.icon.list.unordered:before{content:"\f0ca"}i.icon.list:before{content:"\f03a"}i.icon.loading:before{content:"\f110"}i.icon.location:before{content:"\f124"}i.icon.lock:before{content:"\f023"}i.icon.long.arrow.down:before{content:"\f175"}i.icon.long.arrow.left:before{content:"\f177"}i.icon.long.arrow.right:before{content:"\f178"}i.icon.long.arrow.up:before{content:"\f176"}i.icon.magic:before{content:"\f0d0"}i.icon.magnet:before{content:"\f076"}i.icon.mail.outline:before{content:"\f003"}i.icon.mail.reply:before{content:"\f112"}i.icon.mail:before{content:"\f0e0"}i.icon.male:before{content:"\f183"}i.icon.map.marker:before{content:"\f041"}i.icon.map:before{content:"\f14e"}i.icon.maxcdn:before{content:"\f136"}i.icon.medkit:before{content:"\f0fa"}i.icon.meh:before{content:"\f11a"}i.icon.minus.sign.alternate:before{content:"\f146"}i.icon.minus.sign:before{content:"\f056"}i.icon.minus:before{content:"\f068"}i.icon.mobile:before{content:"\f10b"}i.icon.money:before{content:"\f0d6"}i.icon.moon:before{content:"\f186"}i.icon.move:before{content:"\f047"}i.icon.music:before{content:"\f001"}i.icon.mute:before{content:"\f131"}i.icon.off:before{content:"\f011"}i.icon.ok.circle:before{content:"\f05d"}i.icon.ok.sign:before{content:"\f058"}i.icon.paste:before{content:"\f0ea"}i.icon.pause:before{content:"\f04c"}i.icon.payment:before{content:"\f09d"}i.icon.pencil:before{content:"\f040"}i.icon.phone.sign:before{content:"\f098"}i.icon.phone:before{content:"\f095"}i.icon.photo:before{content:"\f03e"}i.icon.pin:before{content:"\f08d"}i.icon.pinterest.sign:before{content:"\f0d3"}i.icon.pinterest:before{content:"\f0d2"}i.icon.plane:before{content:"\f072"}i.icon.play.circle:before{content:"\f01d"}i.icon.play.sign:before{content:"\f144"}i.icon.play:before{content:"\f04b"}i.icon.pound:before{content:"\f154"}i.icon.print:before{content:"\f02f"}i.icon.puzzle.piece:before{content:"\f12e"}i.icon.qr.code:before{content:"\f029"}i.icon.question:before{content:"\f128"}i.icon.quote.left:before{content:"\f10d"}i.icon.quote.right:before{content:"\f10e"}i.icon.refresh:before{content:"\f021"}i.icon.remove.circle:before{content:"\f05c"}i.icon.remove.sign:before{content:"\f057"}i.icon.remove:before{content:"\f00d"}i.icon.renren:before{content:"\f18b"}i.icon.reorder:before{content:"\f0c9"}i.icon.repeat:before{content:"\f01e"}i.icon.reply.all.mail:before{content:"\f122"}i.icon.resize.full:before{content:"\f065"}i.icon.resize.horizontal:before{content:"\f07e"}i.icon.resize.small:before{content:"\f066"}i.icon.resize.vertical:before{content:"\f07d"}i.icon.retweet:before{content:"\f079"}i.icon.road:before{content:"\f018"}i.icon.rocket:before{content:"\f135"}i.icon.rss.sign:before{content:"\f143"}i.icon.rss:before{content:"\f09e"}i.icon.rupee:before{content:"\f156"}i.icon.save:before{content:"\f0c7"}i.icon.screenshot:before{content:"\f05b"}i.icon.search:before{content:"\f002"}i.icon.setting:before{content:"\f013"}i.icon.settings:before{content:"\f085"}i.icon.share.sign:before{content:"\f14d"}i.icon.share:before{content:"\f045"}i.icon.shield:before{content:"\f132"}i.icon.shuffle:before{content:"\f074"}i.icon.sign.in:before{content:"\f090"}i.icon.sign.out:before{content:"\f08b"}i.icon.sign:before{content:"\f0c8"}i.icon.signal:before{content:"\f012"}i.icon.sitemap:before{content:"\f0e8"}i.icon.skype:before{content:"\f17e"}i.icon.smile:before{content:"\f118"}i.icon.sort.ascending:before{content:"\f0de"}i.icon.sort.descending:before{content:"\f0dd"}i.icon.sort.alphabet.descending:before{content:"\f15e"}i.icon.sort.alphabet:before{content:"\f15d"}i.icon.sort.attributes.descending:before{content:"\f161"}i.icon.sort.attributes:before{content:"\f160"}i.icon.sort.order.descending:before{content:"\f163"}i.icon.sort.order:before{content:"\f162"}i.icon.sort:before{content:"\f0dc"}i.icon.stackexchange:before{content:"\f16c"}i.icon.star.empty:before{content:"\f006"}i.icon.star.half.empty:before{content:"\f123"}i.icon.star.half.full:before,i.icon.star.half:before{content:"\f089"}i.icon.star:before{content:"\f005"}i.icon.step.backward:before{content:"\f048"}i.icon.step.forward:before{content:"\f051"}i.icon.stethoscope:before{content:"\f0f1"}i.icon.stop:before{content:"\f04d"}i.icon.strikethrough:before{content:"\f0cc"}i.icon.subscript:before{content:"\f12c"}i.icon.suitcase:before{content:"\f0f2"}i.icon.sun:before{content:"\f185"}i.icon.superscript:before{content:"\f12b"}i.icon.table:before{content:"\f0ce"}i.icon.tablet:before{content:"\f10a"}i.icon.tag:before{content:"\f02b"}i.icon.tags:before{content:"\f02c"}i.icon.tasks:before{content:"\f0ae"}i.icon.terminal:before{content:"\f120"}i.icon.text.height:before{content:"\f034"}i.icon.text.width:before{content:"\f035"}i.icon.thumbs.down.outline:before{content:"\f088"}i.icon.thumbs.down:before{content:"\f165"}i.icon.thumbs.up.outline:before{content:"\f087"}i.icon.thumbs.up:before{content:"\f164"}i.icon.ticket:before{content:"\f145"}i.icon.time:before{content:"\f017"}i.icon.tint:before{content:"\f043"}i.icon.trash:before{content:"\f014"}i.icon.trello:before{content:"\f181"}i.icon.trophy:before{content:"\f091"}i.icon.truck:before{content:"\f0d1"}i.icon.tumblr.sign:before{content:"\f174"}i.icon.tumblr:before{content:"\f173"}i.icon.twitter.sign:before{content:"\f081"}i.icon.twitter:before{content:"\f099"}i.icon.umbrella:before{content:"\f0e9"}i.icon.underline:before{content:"\f0cd"}i.icon.undo:before{content:"\f0e2"}i.icon.unhide:before{content:"\f06e"}i.icon.unlink:before{content:"\f127"}i.icon.unlock.alternate:before{content:"\f13e"}i.icon.unlock:before{content:"\f09c"}i.icon.unmute:before{content:"\f130"}i.icon.up:before{content:"\f062"}i.icon.upload.disk:before{content:"\f093"}i.icon.upload:before{content:"\f01b"}i.icon.url:before{content:"\f0c1"}i.icon.user:before{content:"\f007"}i.icon.users:before{content:"\f0c0"}i.icon.video:before{content:"\f008"}i.icon.vk:before{content:"\f189"}i.icon.volume.down:before{content:"\f027"}i.icon.volume.off:before{content:"\f026"}i.icon.volume.up:before{content:"\f028"}i.icon.warning:before{content:"\f071"}i.icon.weibo:before{content:"\f18a"}i.icon.windows:before{content:"\f17a"}i.icon.won:before{content:"\f159"}i.icon.wrench:before{content:"\f0ad"}i.icon.xing.sign:before{content:"\f169"}i.icon.xing:before{content:"\f168"}i.icon.yen:before{content:"\f157"}i.icon.youtube.play:before{content:"\f16a"}i.icon.youtube.sign:before{content:"\f166"}i.icon.youtube:before{content:"\f167"}i.icon.yuan:before{content:"\f158"}i.icon.zoom.in:before{content:"\f00e"}i.icon.zoom.out:before{content:"\f010"}i.icon.check:before{content:"\f00c"}i.icon.close:before,i.icon.delete:before{content:"\f00d"}i.icon.like:before{content:"\f004"}i.icon.plus:before{content:"\f067"}i.icon.signup:before{content:"\f044"}i.icon.star{width:auto;margin:0}i.icon.left{width:auto;margin:0 .5em 0 0}i.icon.right,i.icon.search{width:auto;margin:0 0 0 .5em}i.icon.loading{-webkit-animation:icon-loading 2s linear infinite;-moz-animation:icon-loading 2s linear infinite;-ms-animation:icon-loading 2s linear infinite;animation:icon-loading 2s linear infinite}@keyframes icon-loading{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes icon-loading{from{-moz-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes icon-loading{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes icon-loading{from{-ms-transform:rotate(0deg);transform:rotate(0deg)}to{-ms-transform:rotate(360deg);transform:rotate(360deg)}}i.emphasized.icon,i.icon.active,i.icon.hover{opacity:1}i.icon.disabled{opacity:.3}i.link.icon{cursor:pointer;opacity:.7;-webkit-transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;transition:opacity .3s ease-out}i.link.icon:hover{opacity:1!important}i.circular.icon{border-radius:500em!important;padding:.5em .35em!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;line-height:1!important;width:2em!important;height:2em!important}i.circular.inverted.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.flipped.icon,i.horizontally.flipped.icon{-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}i.vertically.flipped.icon{-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}i.clockwise.rotated.icon,i.right.rotated.icon,i.rotated.icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}i.counterclockwise.rotated.icon,i.left.rotated.icon{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}i.square.icon{width:2em;height:2em;padding:.5em .35em!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;vertical-align:baseline}i.square.inverted.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.inverted.icon{background-color:#222;color:#FFF;-moz-osx-font-smoothing:grayscale}i.blue.icon{color:#6ECFF5!important}i.black.icon{color:#5C6166!important}i.green.icon{color:#A1CF64!important}i.red.icon{color:#D95C5C!important}i.purple.icon{color:#564F8A!important}i.orange.icon{color:#F05940!important}i.teal.icon{color:#00B5AD!important}i.inverted.black.icon{background-color:#5C6166!important;color:#FFF!important}i.inverted.blue.icon{background-color:#6ECFF5!important;color:#FFF!important}i.inverted.green.icon{background-color:#A1CF64!important;color:#FFF!important}i.inverted.red.icon{background-color:#D95C5C!important;color:#FFF!important}i.inverted.purple.icon{background-color:#564F8A!important;color:#FFF!important}i.inverted.orange.icon{background-color:#F05940!important;color:#FFF!important}i.inverted.teal.icon{background-color:#00B5AD!important;color:#FFF!important}i.small.icon{font-size:.875em}i.icon{font-size:1em}i.large.icon{font-size:1.5em;vertical-align:middle}i.big.icon{font-size:2em;vertical-align:middle}i.huge.icon{font-size:4em;vertical-align:middle}i.massive.icon{font-size:8em;vertical-align:middle}.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:rgba(0,0,0,.05)}img.ui.image{display:block;background:0 0}.ui.image img{display:block;max-width:100%;height:auto}.ui.disabled.image{cursor:default;opacity:.3}.ui.rounded.image,.ui.rounded.image img,.ui.rounded.images .image,.ui.rounded.images img{border-radius:.3125em}.ui.circular.image,.ui.circular.image img,.ui.circular.images .image,.ui.circular.images img{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.images,.ui.fluid.images img{display:block;width:100%}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.images .image,.ui.avatar.images img{margin-right:.5em;display:inline-block;width:2em;height:2em;border-radius:500rem}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-bottom:1em;margin-left:1em}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img{width:20px;font-size:.7rem}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img{width:35px;font-size:.8rem}.ui.small.image,.ui.small.images .image,.ui.small.images img{width:80px;font-size:.9rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img{width:300px;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img{width:450px;font-size:1.1rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img{width:600px;font-size:1.2rem}.ui.images{font-size:0;margin:0 -.25rem}.ui.images .image,.ui.images img{display:inline-block;margin:0 .25em .5em}.ui.input{display:inline-block;position:relative;color:rgba(0,0,0,.7)}.ui.input input{width:100%;font-family:"Helvetica Neue",Helvetica,Arial;margin:0;padding:.65em 1em;font-size:1em;background-color:#FFF;border:1px solid rgba(0,0,0,.15);outline:0;color:rgba(0,0,0,.7);border-radius:.3125em;-webkit-transition:background-color .3s ease-out,-webkit-box-shadow .2s ease,border-color .2s ease;-moz-transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease;transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.input::-webkit-input-placeholder{color:#BBB}.ui.input::-moz-placeholder{color:#BBB}.ui.input input:active,.ui.input.down input{border-color:rgba(0,0,0,.3);background-color:#FAFAFA}.ui.loading.input>.icon{background:url(../images/loader-mini.gif) 50% 50% no-repeat}.ui.loading.input>.icon:after,.ui.loading.input>.icon:before{display:none}.ui.input input:focus,.ui.input.focus input{border-color:rgba(0,0,0,.2);color:rgba(0,0,0,.85)}.ui.input input:focus input::-webkit-input-placeholder,.ui.input.focus input input::-webkit-input-placeholder{color:#AAA}.ui.input input:focus input::-moz-placeholder,.ui.input.focus input input::-moz-placeholder{color:#AAA}.ui.input.error input{background-color:snow;border-color:#E7BEBE;color:#D95C5C}.ui.input.error input ::-webkit-input-placeholder{color:rgba(255,80,80,.4)}.ui.input.error input ::-moz-placeholder{color:rgba(255,80,80,.4)}.ui.input.error input :focus::-webkit-input-placeholder{color:rgba(255,80,80,.7)}.ui.input.error input :focus::-moz-placeholder{color:rgba(255,80,80,.7)}.ui.transparent.input input{border:none;background-color:transparent}.ui.icon.input>.icon{cursor:default;position:absolute;opacity:.5;top:0;right:0;margin:0;width:2.6em;height:100%;padding-top:.82em;text-align:center;border-radius:0 .3125em .3125em 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:opacity .3s ease-out;-moz-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.ui.icon.input>.link.icon{cursor:pointer}.ui.icon.input input{padding-right:3em!important}.ui.icon.input>.circular.icon{top:.35em;right:.5em}.ui.left.icon.input>.icon{right:auto;left:1px;border-radius:.3125em 0 0 .3125em}.ui.left.icon.input>.circular.icon{right:auto;left:.5em}.ui.left.icon.input>input{padding-left:3em!important;padding-right:1.2em!important}.ui.icon.input>input:focus~.icon{opacity:1}.ui.labeled.input .corner.label{font-size:.7em;border-radius:0 .3125em}.ui.labeled.input .left.corner.label{border-radius:.3125em 0}.ui.labeled.input input{padding-right:2.5em!important}.ui.labeled.icon.input:not(.left)>input{padding-right:3.25em!important}.ui.labeled.icon.input:not(.left)>.icon{margin-right:1.25em}.ui.action.input{display:table}.ui.action.input>input{display:table-cell;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right:none}.ui.action.input>.button,.ui.action.input>.buttons{display:table-cell;border-top-left-radius:0;border-bottom-left-radius:0;white-space:nowrap}.ui.action.input>.button>.icon,.ui.action.input>.buttons>.button>.icon{display:inline;vertical-align:top}.ui.fluid.action.input{display:table;width:100%}.ui.fluid.action.input>.button{width:.01%}.ui.fluid.input{display:block}.ui.mini.input{font-size:.8125em}.ui.small.input{font-size:.875em}.ui.input{font-size:1em}.ui.large.input{font-size:1.125em}.ui.big.input{font-size:1.25em}.ui.huge.input{font-size:1.375em}.ui.massive.input{font-size:1.5em}.ui.label{display:inline-block;vertical-align:middle;margin:-.25em .25em 0;background-color:#E8E8E8;border-color:#E8E8E8;padding:.5em .8em;color:rgba(0,0,0,.65);text-transform:uppercase;font-weight:400;border-radius:.325em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:background .1s linear;-moz-transition:background .1s linear;transition:background .1s linear}.ui.label:first-child{margin-left:0}.ui.label:last-child{margin-right:0}a.ui.label{cursor:pointer}.ui.label a{cursor:pointer;color:inherit;opacity:.8;-webkit-transition:.2s opacity ease;-moz-transition:.2s opacity ease;transition:.2s opacity ease}.ui.label a:hover{opacity:1}.ui.label .detail{display:inline-block;margin-left:.5em;font-weight:700;opacity:.8}.ui.label .icon{width:auto}.ui.label .delete.icon{cursor:pointer;margin:0 0 0 .5em;opacity:.7;-webkit-transition:background .1s linear;-moz-transition:background .1s linear;transition:background .1s linear}.ui.label .delete.icon:hover{opacity:.99}.ui.segment>.attached.label:first-child+*{margin-top:2.5em}.ui.segment>.bottom.attached.label:first-child~:last-child{margin-top:0;margin-bottom:2.5em}.ui.image.label{width:auto!important;margin-top:0;margin-bottom:0;padding-top:.4em;padding-bottom:.4em;line-height:1.5em;vertical-align:baseline;text-transform:none;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset}.ui.image.label img{display:inline-block;height:2.25em;margin:-.4em .8em -.4em -.8em;vertical-align:top;border-radius:.325em 0 0 .325em}.ui.label.disabled{opacity:.5}a.ui.label:hover,a.ui.labels .label:hover{background-color:#E0E0E0;border-color:#E0E0E0;color:rgba(0,0,0,.7)}.ui.labels a.label:hover:before,a.ui.label:hover:before{background-color:#E0E0E0;color:rgba(0,0,0,.7)}.ui.label.visible,.ui.labels.visible .label{display:inline-block!important}.ui.label.hidden,.ui.labels.hidden .label{display:none!important}.ui.tag.label,.ui.tag.labels .label{margin-left:1em;position:relative;padding:.33em 1.3em .33em 1.4em;border-radius:0 3px 3px 0}.ui.tag.label:before,.ui.tag.labels .label:before{position:absolute;top:.3em;left:.3em;content:'';margin-left:-1em;background-image:none;width:1.5em;height:1.5em;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition:background .1s linear;-moz-transition:background .1s linear;transition:background .1s linear}.ui.tag.label:after,.ui.tag.labels .label:after{position:absolute;content:'';top:50%;left:-.25em;margin-top:-.3em;background-color:#FFF;width:.55em;height:.55em;-webkit-box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);border-radius:100px}.ui.ribbon.label{position:relative;margin:0 .2em;left:-2rem;padding-left:2rem;border-radius:0 4px 4px 0;border-color:rgba(0,0,0,.15)}.ui.ribbon.label:after{position:absolute;content:"";top:100%;left:0;border-top:0 solid transparent;border-right-width:1em;border-right-color:inherit;border-right-style:solid;border-bottom:1em solid transparent;border-left:0 solid transparent;width:0;height:0}.ui.attached.label,.ui.top.attached.label{width:100%;position:absolute;margin:0;top:0;left:0;padding:.75em 1em;border-radius:4px 4px 0 0}.ui.bottom.attached.label{top:auto;bottom:0;border-radius:0 0 4px 4px}.ui.top.left.attached.label{width:auto;margin-top:0!important;border-radius:4px 0}.ui.top.right.attached.label{width:auto;left:auto;right:0;border-radius:0 4px}.ui.bottom.left.attached.label{width:auto;top:auto;bottom:0;border-radius:4px 0 0 4px}.ui.bottom.right.attached.label{top:auto;bottom:0;left:auto;right:0;width:auto;border-radius:0 4px}.ui.corner.label{background-color:transparent;position:absolute;top:0;right:0;z-index:10;margin:0;width:3em;height:3em;padding:0;text-align:center;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;transition:color .2s ease}.ui.corner.label:after{position:absolute;content:"";right:0;top:0;z-index:-1;width:0;height:0;border-top:0 solid transparent;border-right:3em solid transparent;border-bottom:3em solid transparent;border-left:0 solid transparent;border-right-color:inherit;-webkit-transition:border-color .2s ease;-moz-transition:border-color .2s ease;transition:border-color .2s ease}.ui.corner.label .icon{font-size:.875em;margin:.5em 0 0 1.25em}.ui.corner.label .text{display:inline-block;font-weight:700;margin:.5em 0 0 1em;width:2.5em;font-size:.875em;text-align:center;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.ui.input>.ui.corner.label,.ui.rounded.image>.ui.corner.label,.ui.segment>.ui.corner.label{overflow:hidden}.ui.segment>.ui.corner.label{top:-1px;right:-1px}.ui.segment>.ui.left.corner.label{right:auto;left:-1px}.ui.input>.ui.corner.label{top:1px;right:1px}.ui.input>.ui.right.corner.label{right:auto;left:1px}.ui.left.corner.label,.ui.left.corner.label:after{right:auto;left:0}.ui.left.corner.label:after{border-top:3em solid transparent;border-right:3em solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent;border-top-color:inherit}.ui.left.corner.label .icon{margin:.5em 0 0 -1em}.ui.left.corner.label .text{margin:.5em 0 0 -1em;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.ui.corner.label:hover{background-color:transparent}.ui.fluid.labels>.label,.ui.label.fluid{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.inverted.label,.ui.inverted.labels .label{color:#FFF!important}.ui.black.label,.ui.black.labels .label{background-color:#5C6166!important;border-color:#5C6166!important;color:#FFF!important}.ui.black.label:before,.ui.black.labels .label:before,.ui.labels .black.label:before{background-color:#5C6166!important}a.ui.black.label:hover,a.ui.black.labels .label:hover{background-color:#333!important;border-color:#333!important}.ui.black.labels a.label:hover:before,.ui.labels a.black.label:hover:before,a.ui.black.label:hover:before{background-color:#333!important}.ui.black.corner.label,.ui.black.corner.label:hover{background-color:transparent!important}.ui.black.ribbon.label{border-color:#333!important}.ui.green.label,.ui.green.labels .label{background-color:#A1CF64!important;border-color:#A1CF64!important;color:#FFF!important}.ui.green.label:before,.ui.green.labels .label:before,.ui.labels .green.label:before{background-color:#A1CF64!important}a.ui.green.label:hover,a.ui.green.labels .label:hover{background-color:#89B84C!important;border-color:#89B84C!important}.ui.green.labels a.label:hover:before,.ui.labels a.green.label:hover:before,a.ui.green.label:hover:before{background-color:#89B84C!important}.ui.green.corner.label,.ui.green.corner.label:hover{background-color:transparent!important}.ui.green.ribbon.label{border-color:#89B84C!important}.ui.red.label,.ui.red.labels .label{background-color:#D95C5C!important;border-color:#D95C5C!important;color:#FFF!important}.ui.labels .red.label:before,.ui.red.label:before,.ui.red.labels .label:before{background-color:#D95C5C!important}.ui.red.corner.label,.ui.red.corner.label:hover{background-color:transparent!important}a.ui.red.label:hover,a.ui.red.labels .label:hover{background-color:#DE3859!important;border-color:#DE3859!important;color:#FFF!important}.ui.labels a.red.label:hover:before,.ui.red.labels a.label:hover:before,a.ui.red.label:hover:before{background-color:#DE3859!important}.ui.red.ribbon.label{border-color:#DE3859!important}.ui.blue.label,.ui.blue.labels .label{background-color:#6ECFF5!important;border-color:#6ECFF5!important;color:#FFF!important}.ui.blue.label:before,.ui.blue.labels .label:before,.ui.labels .blue.label:before{background-color:#6ECFF5!important}.ui.blue.labels a.label:hover,a.ui.blue.label:hover,a.ui.blue.labels .label:hover{background-color:#1AB8F3!important;border-color:#1AB8F3!important;color:#FFF!important}.ui.blue.labels a.label:hover:before,.ui.labels a.blue.label:hover:before,a.ui.blue.label:hover:before{background-color:#1AB8F3!important}.ui.blue.corner.label,.ui.blue.corner.label:hover{background-color:transparent!important}.ui.blue.ribbon.label{border-color:#1AB8F3!important}.ui.purple.label,.ui.purple.labels .label{background-color:#564F8A!important;border-color:#564F8A!important;color:#FFF!important}.ui.labels .purple.label:before,.ui.purple.label:before,.ui.purple.labels .label:before{background-color:#564F8A!important}.ui.purple.labels a.label:hover,a.ui.purple.label:hover,a.ui.purple.labels .label:hover{background-color:#3E3773!important;border-color:#3E3773!important;color:#FFF!important}.ui.labels a.purple.label:hover:before,.ui.purple.labels a.label:hover:before,a.ui.purple.label:hover:before{background-color:#3E3773!important}.ui.purple.corner.label,.ui.purple.corner.label:hover{background-color:transparent!important}.ui.purple.ribbon.label{border-color:#3E3773!important}.ui.orange.label,.ui.orange.labels .label{background-color:#F05940!important;border-color:#F05940!important;color:#FFF!important}.ui.labels .orange.label:before,.ui.orange.label:before,.ui.orange.labels .label:before{background-color:#F05940!important}.ui.orange.labels a.label:hover,a.ui.orange.label:hover,a.ui.orange.labels .label:hover{background-color:#FF4121!important;border-color:#FF4121!important;color:#FFF!important}.ui.labels a.orange.label:hover:before,.ui.orange.labels a.label:hover:before,a.ui.orange.label:hover:before{background-color:#FF4121!important}.ui.orange.corner.label,.ui.orange.corner.label:hover{background-color:transparent!important}.ui.orange.ribbon.label{border-color:#FF4121!important}.ui.teal.label,.ui.teal.labels .label{background-color:#00B5AD!important;border-color:#00B5AD!important;color:#FFF!important}.ui.labels .teal.label:before,.ui.teal.label:before,.ui.teal.labels .label:before{background-color:#00B5AD!important}.ui.teal.labels a.label:hover,a.ui.teal.label:hover,a.ui.teal.labels .label:hover{background-color:#009A93!important;border-color:#009A93!important;color:#FFF!important}.ui.labels a.teal.label:hover:before,.ui.teal.labels a.label:hover:before,a.ui.teal.label:hover:before{background-color:#009A93!important}.ui.teal.corner.label,.ui.teal.corner.label:hover{background-color:transparent!important}.ui.teal.ribbon.label{border-color:#009A93!important}.ui.horizontal.label,.ui.horizontal.labels .label{margin:-.125em .5em -.125em 0;padding:.35em 1em;min-width:6em;text-align:center}.ui.circular.label,.ui.circular.labels .label{min-height:1em;max-height:2em;padding:.5em!important;line-height:1em;text-align:center;border-radius:500rem}.ui.pointing.label{position:relative}.ui.attached.pointing.label{position:absolute}.ui.pointing.label:before{position:absolute;content:"";width:.6em;height:.6em;background-image:none;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-transition:background .1s linear;-moz-transition:background .1s linear;transition:background .1s linear;background-color:#E8E8E8}.ui.pointing.above.label,.ui.pointing.label{margin-top:1em}.ui.pointing.above.label:before,.ui.pointing.label:before{margin-left:-.3em;top:-.3em;left:50%}.ui.pointing.below.label{margin-top:0;margin-bottom:1em}.ui.pointing.below.label:before{margin-left:-.3em;top:auto;right:auto;bottom:-.3em;left:50%}.ui.pointing.left.label{margin-top:0;margin-left:1em}.ui.pointing.left.label:before{margin-top:-.3em;bottom:auto;right:auto;top:50%;left:0}.ui.pointing.right.label{margin-top:0;margin-right:1em}.ui.pointing.right.label:before{margin-top:-.3em;right:-.3em;top:50%;bottom:auto;left:auto}.ui.floating.label{position:absolute;z-index:100;top:-1em;left:100%;margin:0 0 0 -1.5em!important}.ui.small.label,.ui.small.labels .label{font-size:.75rem}.ui.label{font-size:.8125rem}.ui.large.label,.ui.large.labels .label{font-size:.875rem}.ui.huge.label,.ui.huge.labels .label{font-size:1rem}.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);-moz-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.dimmer .loader{display:block}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.mini.text.loader{min-width:16px;padding-top:2em;font-size:.875em}.ui.small.text.loader{min-width:24px;padding-top:2.5em;font-size:.875em}.ui.text.loader{min-width:32px;font-size:1em;padding-top:3em}.ui.large.text.loader{min-width:64px;padding-top:5em;font-size:1.2em}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.dimmer .ui.text.loader,.ui.inverted.text.loader{color:rgba(255,255,255,.8)}.ui.inverted.dimmer .ui.text.loader{color:rgba(0,0,0,.8)}.ui.dimmer .mini.ui.loader,.ui.inverted .mini.ui.loader{background-image:url(../images/loader-mini-inverted.gif)}.ui.dimmer .small.ui.loader,.ui.inverted .small.ui.loader{background-image:url(../images/loader-small-inverted.gif)}.ui.dimmer .ui.loader,.ui.inverted.loader{background-image:url(../images/loader-medium-inverted.gif)}.ui.dimmer .large.ui.loader,.ui.inverted .large.ui.loader{background-image:url(../images/loader-large-inverted.gif)}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:16px;height:16px;background-image:url(../images/loader-mini.gif)}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:24px;height:24px;background-image:url(../images/loader-small.gif)}.ui.inverted.dimmer .ui.loader,.ui.loader{width:32px;height:32px;background:url(../images/loader-medium.gif) 48% 0 no-repeat}.ui.inverted.dimmer .ui.loader.large,.ui.loader.large{width:64px;height:64px;background-image:url(../images/loader-large.gif)}.ui.inline.loader{position:static;vertical-align:middle;margin:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block}.ui.progress{border:1px solid rgba(0,0,0,.1);width:100%;height:35px;background-color:#FAFAFA;padding:5px;border-radius:.3125em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.progress .bar{display:inline-block;height:100%;background-color:#CCC;border-radius:3px;-webkit-transition:width 1s ease-in-out,background-color 1s ease-out;-moz-transition:width 1s ease-in-out,background-color 1s ease-out;transition:width 1s ease-in-out,background-color 1s ease-out}.ui.successful.progress .bar{background-color:#73E064!important}.ui.successful.progress .bar,.ui.successful.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important;animation:none!important}.ui.warning.progress .bar{background-color:#E96633!important}.ui.warning.progress .bar,.ui.warning.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important;animation:none!important}.ui.failed.progress .bar{background-color:#DF9BA4!important}.ui.failed.progress .bar,.ui.failed.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important;animation:none!important}.ui.active.progress .bar{position:relative}.ui.active.progress .bar::after{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#FFF;border-radius:3px;-webkit-animation:progress-active 2s ease-out infinite;-moz-animation:progress-active 2s ease-out infinite;animation:progress-active 2s ease-out infinite}@-webkit-keyframes progress-active{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:95%}}@-moz-keyframes progress-active{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:100%}}@keyframes progress-active{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:100%}}.ui.disabled.progress{opacity:.35}.ui.disabled.progress .bar,.ui.disabled.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important;animation:none!important}.ui.progress.attached{position:relative;border:none}.ui.progress.attached,.ui.progress.attached .bar{display:block;height:3px;padding:0;overflow:hidden;border-radius:0 0 .3125em .3125em}.ui.progress.attached .bar{border-radius:0}.ui.progress.top.attached,.ui.progress.top.attached .bar{top:-2px;border-radius:.3125em .3125em 0 0}.ui.progress.top.attached .bar{border-radius:0}.ui.blue.progress .bar{background-color:#6ECFF5}.ui.black.progress .bar{background-color:#5C6166}.ui.green.progress .bar{background-color:#A1CF64}.ui.red.progress .bar{background-color:#EF4D6D}.ui.purple.progress .bar{background-color:#564F8A}.ui.teal.progress .bar{background-color:#00B5AD}.ui.progress.striped .bar{background-size:30px 30px;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(315deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(315deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.ui.progress.active.striped .bar:after{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}.ui.progress.active.striped .bar{-webkit-animation:progress-striped 3s linear infinite;-moz-animation:progress-striped 3s linear infinite;animation:progress-striped 3s linear infinite}@-webkit-keyframes progress-striped{0%{background-position:0 0}100%{background-position:60px 0}}@-moz-keyframes progress-striped{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes progress-striped{0%{background-position:0 0}100%{background-position:60px 0}}.ui.small.progress .bar{height:14px}.ui.reveal{display:inline-block;position:relative!important;z-index:2!important;font-size:0!important}.ui.reveal>.content{font-size:1rem!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:4!important;-webkit-transition:all .8s cubic-bezier(0.175,.885,.32,1) .15s;-moz-transition:all .8s cubic-bezier(0.175,.885,.32,1) .15s;transition:all .8s cubic-bezier(0.175,.885,.32,1) .15s}.ui.reveal>.hidden.content{position:relative!important;z-index:3!important}.ui.reveal.button{overflow:hidden}.ui.slide.reveal{position:relative!important;display:block;overflow:hidden!important;white-space:nowrap}.ui.slide.reveal>.content{display:block;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;-webkit-transition:top .8s cubic-bezier(0.175,.885,.32,1) .15s,left .8s cubic-bezier(0.175,.885,.32,1) .15s,right .8s cubic-bezier(0.175,.885,.32,1) .15s,bottom .8s cubic-bezier(0.175,.885,.32,1) .15s;-moz-transition:top .8s cubic-bezier(0.175,.885,.32,1) .15s,left .8s cubic-bezier(0.175,.885,.32,1) .15s,right .8s cubic-bezier(0.175,.885,.32,1) .15s,bottom .8s cubic-bezier(0.175,.885,.32,1) .15s;transition:top .8s cubic-bezier(0.175,.885,.32,1) .15s,left .8s cubic-bezier(0.175,.885,.32,1) .15s,right .8s cubic-bezier(0.175,.885,.32,1) .15s,bottom .8s cubic-bezier(0.175,.885,.32,1) .15s}.ui.slide.reveal>.visible.content{position:relative!important}.ui.slide.reveal>.hidden.content{position:absolute!important;left:100%!important;width:100%!important}.ui.slide.reveal:focus>.visible.content,.ui.slide.reveal:hover>.visible.content{left:-100%!important}.ui.slide.reveal:focus>.hidden.content,.ui.slide.reveal:hover>.hidden.content{left:0!important}.ui.right.slide.reveal>.visible.content{left:0}.ui.right.slide.reveal>.hidden.content{left:auto!important;right:100%!important}.ui.right.slide.reveal:focus>.visible.content,.ui.right.slide.reveal:hover>.visible.content{left:100%!important;right:auto!important}.ui.right.slide.reveal:focus>.hidden.content,.ui.right.slide.reveal:hover>.hidden.content{left:auto!important;right:0!important}.ui.up.slide.reveal>.visible.content{top:0!important;left:0!important;right:auto!important;bottom:auto!important}.ui.up.slide.reveal>.hidden.content{top:100%!important;left:0!important;right:auto!important;bottom:auto!important}.ui.slide.up.reveal:focus>.visible.content,.ui.slide.up.reveal:hover>.visible.content{top:-100%!important;left:0!important}.ui.slide.up.reveal:focus>.hidden.content,.ui.slide.up.reveal:hover>.hidden.content{top:0!important;left:0!important}.ui.down.slide.reveal>.visible.content{top:auto!important;right:auto!important;bottom:auto!important;bottom:0!important}.ui.down.slide.reveal>.hidden.content{top:auto!important;right:auto!important;bottom:100%!important;left:0!important}.ui.slide.down.reveal:focus>.visible.content,.ui.slide.down.reveal:hover>.visible.content{left:0!important;bottom:-100%!important}.ui.slide.down.reveal:focus>.hidden.content,.ui.slide.down.reveal:hover>.hidden.content{left:0!important;bottom:0!important}.ui.fade.reveal>.hidden.content{-webkit-transition:opacity .8s cubic-bezier(0.175,.885,.32,1) .15s;-moz-transition:opacity .8s cubic-bezier(0.175,.885,.32,1) .15s;transition:opacity .8s cubic-bezier(0.175,.885,.32,1) .15s;z-index:5!important;opacity:0}.ui.fade.reveal:hover>.hidden.content{opacity:1}.ui.move.left.reveal>.visible.content,.ui.move.reveal>.visible.content{left:auto!important;top:auto!important;bottom:auto!important;right:0!important}.ui.move.left.reveal:focus>.visible.content,.ui.move.left.reveal:hover>.visible.content,.ui.move.reveal:focus>.visible.content,.ui.move.reveal:hover>.visible.content{right:100%!important}.ui.move.right.reveal>.visible.content{right:auto!important;top:auto!important;bottom:auto!important;left:0!important}.ui.move.right.reveal:focus>.visible.content,.ui.move.right.reveal:hover>.visible.content{left:100%!important}.ui.move.up.reveal>.visible.content{right:auto!important;left:auto!important;top:auto!important;bottom:0!important}.ui.move.up.reveal:focus>.visible.content,.ui.move.up.reveal:hover>.visible.content{bottom:100%!important}.ui.move.down.reveal>.visible.content{right:auto!important;left:auto!important;top:0!important;bottom:auto!important}.ui.move.down.reveal:focus>.visible.content,.ui.move.down.reveal:hover>.visible.content{top:100%!important}.ui.rotate.reveal>.visible.content{-webkit-transition-duration:.8s;-moz-transition-duration:.8s;transition-duration:.8s;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.ui.rotate.reveal>.visible.content,.ui.rotate.right.reveal>.visible.content{-webkit-transform-origin:bottom right;-moz-transform-origin:bottom right;-ms-transform-origin:bottom right;transform-origin:bottom right}.ui.rotate.reveal:focus>.visible.content,.ui.rotate.reveal:hover>.visible.content,.ui.rotate.right.reveal:focus>.visible.content,.ui.rotate.right.reveal:hover>.visible.content{-webkit-transform:rotate(110deg);-moz-transform:rotate(110deg);-ms-transform:rotate(110deg);transform:rotate(110deg)}.ui.rotate.left.reveal>.visible.content{-webkit-transform-origin:bottom left;-moz-transform-origin:bottom left;-ms-transform-origin:bottom left;transform-origin:bottom left}.ui.rotate.left.reveal:focus>.visible.content,.ui.rotate.left.reveal:hover>.visible.content{-webkit-transform:rotate(-110deg);-moz-transform:rotate(-110deg);-ms-transform:rotate(-110deg);transform:rotate(-110deg)}.ui.disabled.reveal{opacity:1!important}.ui.disabled.reveal>.content{-webkit-transition:none!important;-moz-transition:none!important;transition:none!important}.ui.disabled.reveal:focus>.visible.content,.ui.disabled.reveal:hover>.visible.content{position:static!important;display:block!important;opacity:1!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;transform:none!important}.ui.disabled.reveal:focus>.hidden.content,.ui.disabled.reveal:hover>.hidden.content{display:none!important}.ui.masked.reveal{overflow:hidden}.ui.instant.reveal>.content{-webkit-transition-delay:0s!important;-moz-transition-delay:0s!important;transition-delay:0s!important}.ui.segment{position:relative;background-color:#FFF;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);margin:1em 0;padding:1em;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.segment:first-child{margin-top:0}.ui.segment:last-child{margin-bottom:0}.ui.segment:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.vertical.segment{margin:0;padding-left:0;padding-right:0;background-color:transparent;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}.ui.vertical.segment:first-child{padding-top:0}.ui.horizontal.segment{margin:0;padding-top:0;padding-bottom:0;background-color:transparent;border-radius:0;-webkit-box-shadow:1px 0 0 rgba(0,0,0,.1);box-shadow:1px 0 0 rgba(0,0,0,.1)}.ui.horizontal.segment:first-child{padding-left:0}.ui.pointing.menu~.ui.attached.segment{top:1px}.ui.page.grid.segment .ui.grid .ui.segment.column{padding-top:2rem;padding-bottom:2rem}.ui.grid .ui.segment.column,.ui.grid .ui.segment.row,.ui.grid.segment{border-radius:0;-webkit-box-shadow:none;box-shadow:none;border:none}.ui.segment>:first-child{margin-top:0}.ui.segment>:last-child{margin-bottom:0}.ui.piled.segment{margin:2em 0;-webkit-box-shadow:0 0 1px 1px rgba(0,0,0,.15);-ms-box-shadow:0 0 1px 1px rgba(0,0,0,.15);-o-box-shadow:0 0 1px 1px rgba(0,0,0,.15);box-shadow:0 0 1px 1px rgba(0,0,0,.15)}.ui.piled.segment:first-child{margin-top:0}.ui.piled.segment:last-child{margin-bottom:0}.ui.piled.segment:after,.ui.piled.segment:before{background-color:#FFF;visibility:visible;content:"";display:block;height:100%;left:-1px;position:absolute;width:100%;-webkit-box-shadow:0 0 1px 1px rgba(0,0,0,.1);box-shadow:0 0 1px 1px rgba(0,0,0,.1)}.ui.piled.segment:after{-webkit-transform:rotate(1.2deg);-moz-transform:rotate(1.2deg);-ms-transform:rotate(1.2deg);transform:rotate(1.2deg);top:0;z-index:-1}.ui.piled.segment:before{-webkit-transform:rotate(-1.2deg);-moz-transform:rotate(-1.2deg);-ms-transform:rotate(-1.2deg);transform:rotate(-1.2deg);top:0;z-index:-2}.ui.stacked.segment{padding-bottom:1.7em}.ui.stacked.segment:after,.ui.stacked.segment:before{content:'';position:absolute;bottom:-3px;left:0;border-top:1px solid rgba(0,0,0,.1);background-color:rgba(0,0,0,.02);width:100%;height:5px;visibility:visible}.ui.stacked.segment:before{bottom:0}.ui.stacked.inverted.segment:after,.ui.stacked.inverted.segment:before{background-color:rgba(255,255,255,.1);border-top:1px solid rgba(255,255,255,.35)}.ui.circular.segment{display:table-cell;padding:2em;text-align:center;vertical-align:middle;border-radius:500em}.ui.raised.segment{-webkit-box-shadow:0 1px 2px 1px rgba(0,0,0,.1);box-shadow:0 1px 2px 1px rgba(0,0,0,.1)}.ui.disabled.segment{opacity:.8;color:#DDD}.ui.basic.segment{position:relative;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ui.basic.segment:first-child{padding-top:0}.ui.basic.segment:last-child{padding-bottom:0}.ui.fitted.segment{padding:0}.ui.blue.segment{border-top:.2em solid #6ECFF5}.ui.green.segment{border-top:.2em solid #A1CF64}.ui.red.segment{border-top:.2em solid #D95C5C}.ui.orange.segment{border-top:.2em solid #F05940}.ui.purple.segment{border-top:.2em solid #564F8A}.ui.teal.segment{border-top:.2em solid #00B5AD}.ui.inverted.black.segment{background-color:#5C6166!important;color:#FFF!important}.ui.inverted.blue.segment{background-color:#6ECFF5!important;color:#FFF!important}.ui.inverted.green.segment{background-color:#A1CF64!important;color:#FFF!important}.ui.inverted.red.segment{background-color:#D95C5C!important;color:#FFF!important}.ui.inverted.orange.segment{background-color:#F05940!important;color:#FFF!important}.ui.inverted.purple.segment{background-color:#564F8A!important;color:#FFF!important}.ui.inverted.teal.segment{background-color:#00B5AD!important;color:#FFF!important}.ui.left.aligned.segment{text-align:left}.ui.right.aligned.segment{text-align:right}.ui.center.aligned.segment{text-align:center}.ui.justified.segment{text-align:justify;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ui.floated.segment,.ui.left.floated.segment{float:left}.ui.right.floated.segment{float:right}.ui.inverted.segment{border:none;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.segment .segment{color:rgba(0,0,0,.7)}.ui.inverted.segment .inverted.segment{color:#FFF}.ui.inverted.segment,.ui.primary.inverted.segment{background-color:#222;color:#FFF}.ui.primary.segment{background-color:#FFF;color:#555}.ui.secondary.segment{background-color:#FAF9FA;color:#777}.ui.tertiary.segment{background-color:#EBEBEB;color:#B0B0B0}.ui.secondary.inverted.segment{background-color:#555;background-image:-webkit-linear-gradient(rgba(255,255,255,.3) 0,rgba(255,255,255,.3) 100%);background-image:-moz-linear-gradient(rgba(255,255,255,.3) 0,rgba(255,255,255,.3) 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.3)),to(rgba(255,255,255,.3)));background-image:linear-gradient(rgba(255,255,255,.3) 0,rgba(255,255,255,.3) 100%);color:#FAFAFA}.ui.tertiary.inverted.segment{background-color:#555;background-image:-webkit-linear-gradient(rgba(255,255,255,.6) 0,rgba(255,255,255,.6) 100%);background-image:-moz-linear-gradient(rgba(255,255,255,.6) 0,rgba(255,255,255,.6) 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.6)),to(rgba(255,255,255,.6)));background-image:linear-gradient(rgba(255,255,255,.6) 0,rgba(255,255,255,.6) 100%);color:#EEE}.ui.segment.attached{top:-1px;bottom:-1px;border-radius:0;margin:0;-webkit-box-shadow:0 0 0 1px #DDD;box-shadow:0 0 0 1px #DDD}.ui.top.attached.segment{top:0;bottom:-1px;margin-top:1em;margin-bottom:0;border-radius:5px 5px 0 0}.ui.segment.top.attached:first-child{margin-top:0}.ui.segment.bottom.attached{top:-1px;bottom:0;margin-top:0;margin-bottom:1em;border-radius:0 0 5px 5px}.ui.segment.bottom.attached:last-child{margin-bottom:0}.ui.step,.ui.steps .step{display:inline-block;position:relative;padding:1em 2em 1em 3em;vertical-align:top;background-color:#FFF;color:#888;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.step:after,.ui.steps .step:after{position:absolute;z-index:2;content:'';top:.42em;right:-1em;border:none;background-color:#FFF;width:2.2em;height:2.2em;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-box-shadow:-1px -1px 0 0 rgba(0,0,0,.15) inset;box-shadow:-1px -1px 0 0 rgba(0,0,0,.15) inset}.ui.step,.ui.steps .step,.ui.steps .step:after{-webkit-transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;-moz-transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease}.ui.vertical.steps{overflow:visible}.ui.vertical.steps .step{display:block;border-radius:0;padding:1em 2em}.ui.vertical.steps .step:first-child{padding:1em 2em;border-radius:.3125rem .3125rem 0 0}.ui.vertical.steps .active.step:first-child{border-top-right-radius:0}.ui.vertical.steps .step:last-child{border-radius:0 0 .3125rem .3125rem}.ui.vertical.steps .active.step:last-child{border-bottom-right-radius:0}.ui.vertical.steps .step:after{display:none}.ui.vertical.steps .active.step:after{display:block}.ui.vertical.steps .two.line.step{line-height:1.3}.ui.vertical.steps .two.line.active.step:after{position:absolute;z-index:2;content:'';top:0;right:-1.45em;background-color:transparent;border-bottom:2.35em solid transparent;border-left:1.55em solid #555;border-top:2.35em solid transparent;width:0;height:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none}.ui.steps{cursor:pointer;display:inline-block;font-size:0;overflow:hidden;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:.3125rem}.ui.steps .step:first-child{padding-left:1.35em;border-radius:.3125em 0 0 .3125em}.ui.steps .step:last-child{border-radius:0 .3125em .3125em 0}.ui.steps .step:only-child{border-radius:.3125em}.ui.steps .step:last-child{margin-right:0}.ui.steps .step:last-child:after{display:none}.ui.step.hover,.ui.step:hover{background-color:#F7F7F7;color:rgba(0,0,0,.8)}.ui.step.hover::after,.ui.step:hover,.ui.steps .step.hover:after,.ui.steps .step:hover:after{background-color:#F7F7F7}.ui.step.down,.ui.step:active,.ui.steps .step.down,.ui.steps .step.down:after,.ui.steps .step:active,.ui.steps .step:active:after,.ui.steps.down::after,.ui.steps:active::after{background-color:#F0F0F0}.ui.active.step,.ui.steps .step.active{cursor:auto;background-color:#555;color:#FFF;font-weight:700}.ui.active.steps:after,.ui.steps .step.active:after{background-color:#555;-webkit-box-shadow:none;box-shadow:none}.ui.disabled.step,.ui.steps .disabled.step{cursor:auto;background-color:#FFF;color:#CBCBCB}.ui.disabled.step:after,.ui.steps .disabled.step:after{background-color:#FFF}.attached.ui.steps{margin:0;border-radius:.3125em .3125em 0 0}.attached.ui.steps .step:first-child{border-radius:.3125em 0 0}.attached.ui.steps .step:last-child{border-radius:0 .3125em 0 0}.bottom.attached.ui.steps{margin-top:-1px;border-radius:0 0 .3125em .3125em}.bottom.attached.ui.steps .step:first-child{border-radius:0 0 0 .3125em}.bottom.attached.ui.steps .step:last-child{border-radius:0 0 .3125em}.ui.eight.steps,.ui.five.steps,.ui.four.steps,.ui.one.steps,.ui.seven.steps,.ui.six.steps,.ui.three.steps,.ui.two.steps{display:block}.ui.one.steps>.step{width:100%}.ui.two.steps>.step{width:50%}.ui.three.steps>.step{width:33.333%}.ui.four.steps>.step{width:25%}.ui.five.steps>.step{width:20%}.ui.six.steps>.step{width:16.666%}.ui.seven.steps>.step{width:14.285%}.ui.eight.steps>.step{width:12.5%}.ui.mini.step,.ui.mini.steps .step{font-size:.8rem}.ui.small.step,.ui.small.steps .step{font-size:.875rem}.ui.step,.ui.steps .step{font-size:1rem}.ui.large.step,.ui.large.steps .step{font-size:1.125rem}.ui.big.step,.ui.big.steps .step{font-size:1.25rem}.ui.huge.step,.ui.huge.steps .step{font-size:1.375rem}.ui.massive.step,.ui.massive.steps .step{font-size:1.5rem;font-weight:700}.ui.accordion,.ui.accordion .accordion{width:600px;max-width:100%;font-size:1rem;border-radius:.3125em;background-color:#FFF;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1)}.ui.accordion .accordion .title,.ui.accordion .title{cursor:pointer;margin:0;padding:.75em 1em;color:rgba(0,0,0,.6);border-top:1px solid rgba(0,0,0,.05);-webkit-transition:background-color .2s ease-out;-moz-transition:background-color .2s ease-out;transition:background-color .2s ease-out}.ui.accordion .accordion>.title:first-child,.ui.accordion>.title:first-child{border-top:none}.ui.accordion .accordion .content,.ui.accordion .content>.content,.ui.accordion>.content{display:none;margin:0;padding:1.3em 1em}.ui.accordion .accordion .title .dropdown.icon,.ui.accordion .title .dropdown.icon{display:inline-block;float:none;margin:0 .5em 0 0;-webkit-transition:-webkit-transform .2s ease,opacity .2s ease;-moz-transition:-moz-transform .2s ease,opacity .2s ease;transition:transform .2s ease,opacity .2s ease;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.ui.accordion .accordion .title .dropdown.icon:before,.ui.accordion .title .dropdown.icon:before{content:'\f0da'}.ui.basic.accordion.menu{background-color:#FFF;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1)}.ui.basic.accordion.menu .content,.ui.basic.accordion.menu .title{padding:0}.ui.accordion.menu .content{display:none}.ui.basic.accordion{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.ui.basic.accordion .accordion .title,.ui.basic.accordion .title{background-color:transparent;border-top:none;padding-left:0;padding-right:0}.ui.basic.accordion .accordion .content,.ui.basic.accordion .content{padding:.5em 0}.ui.basic.accordion .accordion .active.title,.ui.basic.accordion .active.title{background-color:transparent}.ui.accordion .accordion .active.title,.ui.accordion .accordion .title:hover,.ui.accordion .active.title,.ui.accordion .title:hover{color:rgba(0,0,0,.8)}.ui.accordion .accordion .active.title,.ui.accordion .active.title{background-color:rgba(0,0,0,.1);color:rgba(0,0,0,.8)}.ui.accordion .accordion .active.title .dropdown.icon,.ui.accordion .active.title .dropdown.icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.ui.accordion .accordion .active.content,.ui.accordion .active.content{display:block}.ui.fluid.accordion,.ui.fluid.accordion .accordion{width:100%}.ui.chatroom{background-color:#F8F8F8;padding:0}.ui.chatroom .room{position:relative;background-color:#FFF;overflow:hidden;height:286px;border:1px solid rgba(0,0,0,.1);border-top:none;border-bottom:none}.ui.chatroom .room .loader{display:none;margin:-25px 0 0 -25px}.ui.chatroom .actions{overflow:hidden;background-color:#EEE;padding:4px;border:1px solid rgba(0,0,0,.1);border-radius:5px 5px 0 0}.ui.chatroom .actions .button{float:right;margin-left:3px}.ui.chatroom .actions .message{float:left;margin-left:6px;font-size:11px;color:#AAA;text-shadow:0 -1px 0 rgba(255,255,255,.8);line-height:28px}.ui.chatroom .actions .message .loader{display:inline-block;margin-right:8px}.ui.chatroom .log{float:left;overflow:auto;overflow-x:hidden;overflow-y:auto}.ui.chatroom .log .message{padding:3px 0;border-top:1px dotted #DADADA}.ui.chatroom .log .message:first-child{border-top:none}.ui.chatroom .status{padding:5px 0;color:#AAA;font-size:12px;font-style:italic;line-height:1.33;border-top:1px dotted #DADADA}.ui.chatroom .log .status:first-child{border-top:none}.ui.chatroom .log .flag{float:left}.ui.chatroom .log p{margin-left:0}.ui.chatroom .log .author{font-weight:700;-webkit-transition:color .3s ease-out;-moz-transition:color .3s ease-out;transition:color .3s ease-out}.ui.chatroom .log a.author:hover{opacity:.8}.ui.chatroom .log .message.admin p{font-weight:700;margin:1px 0 0 23px}.ui.chatroom .log .divider{margin:-1px 0;font-size:11px;padding:10px 0;border-top:1px solid #F8F8F8;border-bottom:1px solid #F8F8F8}.ui.chatroom .log .divider .rule{top:50%;width:15%}.ui.chatroom .log .divider .label{color:#777;margin:0}.ui.chatroom .room .list{position:relative;overflow:auto;overflow-x:hidden;overflow-y:auto;float:left;background-color:#EEE;border-left:1px solid #DDD}.ui.chatroom .room .list .user{display:table;padding:3px 7px;border-bottom:1px solid #DDD}.ui.chatroom .room .list .user:hover{background-color:#F8F8F8}.ui.chatroom .room .list .image{display:table-cell;vertical-align:middle;width:20px}.ui.chatroom .room .list .image img{width:20px;height:20px;vertical-align:middle}.ui.chatroom .room .list p{display:table-cell;vertical-align:middle;padding-left:7px;padding-right:14px;font-size:11px;line-height:1.2;font-weight:700}.ui.chatroom .room .list a:hover{opacity:.8}.ui.chatroom .talk{border:1px solid rgba(0,0,0,.1);padding:5px 0 0;background-color:#EEE;border-radius:0 0 5px 5px}.ui.chatroom .talk .avatar,.ui.chatroom .talk .button,.ui.chatroom .talk input{float:left}.ui.chatroom .talk .avatar img{display:block;width:30px;height:30px;margin-right:4px;border-radius:500rem}.ui.chatroom .talk input{border:1px solid #CCC;margin:0;width:196px;height:14px;padding:8px 5px;font-size:12px;color:#555}.ui.chatroom .talk input.focus{border:1px solid #AAA}.ui.chatroom .send{width:80px;height:32px;margin-left:-1px;padding:4px 12px;font-size:12px;line-height:23px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;border-radius:0 5px 5px 0}.ui.chatroom .talk .log-in.button{display:block;float:none;margin-top:-6px;height:22px;border-radius:0 0 4px 4px}.ui.chatroom .talk .log-in.button i{vertical-align:text-top}.ui.chatroom .log .team.flag{width:18px}.ui.chatroom.loading .loader{display:block}.ui.chatroom{width:330px;height:370px}.ui.chatroom .room .container{width:3000px}.ui.chatroom .log{width:314px;height:278px;padding:4px 7px}.ui.chatroom .room .list{width:124px;height:278px;padding:4px 0}.ui.chatroom .room .list .user{width:110px}.ui.chatroom .talk{height:40px}.ui.checkbox{position:relative;display:inline-block;min-width:1em;min-height:1.25em;line-height:1em;outline:0;vertical-align:middle}.ui.checkbox input{position:absolute;top:0;left:0;opacity:0;outline:0}.ui.checkbox .box,.ui.checkbox label{cursor:pointer;padding-left:2em;outline:0}.ui.checkbox .box:before,.ui.checkbox label:before{position:absolute;top:0;line-height:1;width:1em;height:1em;left:0;content:'';border-radius:4px;background:#FFF;-webkit-transition:background-color .3s ease,-webkit-box-shadow .3s ease;-moz-transition:background-color .3s ease,box-shadow .3s ease;transition:background-color .3s ease,box-shadow .3s ease;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.ui.checkbox .box:after,.ui.checkbox label:after{-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;content:'';position:absolute;background:0 0;border:.2em solid #333;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);top:.275em;left:.2em;width:.45em;height:.15em}.ui.checkbox label{display:block;color:rgba(0,0,0,.6);-webkit-transition:color .2s ease;-moz-transition:color .2s ease;transition:color .2s ease}.ui.checkbox input:focus~label,.ui.checkbox label:hover{color:rgba(0,0,0,.8)}.ui.checkbox~label{cursor:pointer;opacity:.85;vertical-align:middle}.ui.checkbox~label:hover{opacity:1}.ui.checkbox .box:hover::before,.ui.checkbox label:hover::before{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.ui.checkbox .box:active::before,.ui.checkbox label:active::before{background-color:#F5F5F5}.ui.checkbox input:focus~.box:before,.ui.checkbox input:focus~label:before{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{-ms-filter:"alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1}.ui.checkbox input[disabled]~.box:after,.ui.checkbox input[disabled]~label,.ui.disabled.checkbox label,.ui.disabled.checkbox~.box:after{opacity:.4;color:rgba(0,0,0,.3)}.ui.radio.checkbox .box:before,.ui.radio.checkbox label:before{min-width:1em;height:1em;border-radius:500px;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none}.ui.radio.checkbox .box:after,.ui.radio.checkbox label:after{border:none;top:.2em;left:.2em;width:.6em;height:.6em;background-color:#555;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;border-radius:500px}.ui.slider.checkbox{cursor:pointer;min-width:3em}.ui.slider.checkbox:after{position:absolute;top:.5em;left:0;content:'';width:3em;height:2px;background-color:rgba(0,0,0,.1)}.ui.slider.checkbox .box,.ui.slider.checkbox label{padding-left:4em}.ui.slider.checkbox .box:before,.ui.slider.checkbox label:before{cursor:pointer;display:block;position:absolute;top:-.25em;left:0;z-index:1;width:1.5em;height:1.5em;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;border-radius:50rem;-webkit-transition:left .3s ease 0s;-moz-transition:left .3s ease 0s;transition:left .3s ease 0s}.ui.slider.checkbox .box:after,.ui.slider.checkbox label:after{opacity:1;position:absolute;content:'';top:.15em;left:0;z-index:2;margin-left:.375em;border:none;width:.75em;height:.75em;border-radius:50rem;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;-webkit-transition:background .3s ease 0s,left .3s ease 0s;-moz-transition:background .3s ease 0s,left .3s ease 0s;transition:background .3s ease 0s,left .3s ease 0s}.ui.slider.checkbox input:checked~.box:after,.ui.slider.checkbox input:checked~.box:before,.ui.slider.checkbox input:checked~label:after,.ui.slider.checkbox input:checked~label:before{left:1.75em}.ui.slider.checkbox .box:after,.ui.slider.checkbox label:after{background-color:#D95C5C}.ui.slider.checkbox input:checked~.box:after,.ui.slider.checkbox input:checked~label:after{background-color:#89B84C}.ui.toggle.checkbox{cursor:pointer}.ui.toggle.checkbox .box,.ui.toggle.checkbox label{padding-left:4em}.ui.toggle.checkbox .box:before,.ui.toggle.checkbox label:before{cursor:pointer;display:block;position:absolute;content:'';top:-.25em;left:0;z-index:1;background-color:#FFF;width:3em;height:1.5em;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;border-radius:50rem}.ui.toggle.checkbox .box:after,.ui.toggle.checkbox label:after{opacity:1;-webkit-box-shadow:none;box-shadow:none;content:'';position:absolute;top:.15em;left:.5em;z-index:2;border:none;width:.75em;height:.75em;background-color:#D95C5C;border-radius:50rem;-webkit-transition:background .3s ease 0s,left .3s ease 0s;-moz-transition:background .3s ease 0s,left .3s ease 0s;transition:background .3s ease 0s,left .3s ease 0s}.ui.toggle.checkbox:active .box:before,.ui.toggle.checkbox:active label:before{background-color:#F5F5F5}.ui.toggle.checkbox input:checked~.box:after,.ui.toggle.checkbox input:checked~label:after{left:1.75em;background-color:#89B84C}.ui.checkbox{font-size:1em}.ui.large.checkbox{font-size:1.25em}.ui.huge.checkbox{font-size:1.5em}.ui.dimmable{position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:0;height:0;text-align:center;vertical-align:middle;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;-moz-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;z-index:1000}.ui.dimmer>.content{width:100%;height:100%;display:table;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.dimmer>.content>div{display:table-cell;vertical-align:middle;color:#FFF}.ui.horizontal.segment>.ui.dimmer,.ui.segment>.ui.dimmer,.ui.vertical.segment>.ui.dimmer{border-radius:5px}.ui.dimmed.dimmable:not(body){overflow:hidden}.ui.active.dimmer,.ui.dimmed.dimmable>.ui.animating.dimmer,.ui.dimmed.dimmable>.ui.visible.dimmer{display:block;width:100%;height:100%;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-perspective:2000px;-moz-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;-moz-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}.ui.scrolling.dimmable>.dimmer,.ui.scrolling.page.dimmer{position:absolute}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:rgba(0,0,0,.8)}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;z-index:-100;background-color:transparent}.ui.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.ui.dimmed.dimmable>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.dropdown{cursor:pointer;position:relative;display:inline-block;line-height:1;-webkit-transition:border-radius .1s ease,width .2s ease;-moz-transition:border-radius .1s ease,width .2s ease;transition:border-radius .1s ease,width .2s ease;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;tap-highlight-color:transparent}.ui.dropdown .menu{cursor:auto;position:absolute;display:none;top:100%;margin:0;background-color:#FFF;min-width:100%;white-space:nowrap;font-size:.875em;text-shadow:none;-webkit-box-shadow:0 0 1px 1px rgba(0,0,0,.1);box-shadow:0 0 1px 1px rgba(0,0,0,.1);border-radius:0 0 .325em .325em;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;transition:opacity .2s ease;z-index:11}.ui.dropdown>.dropdown.icon{width:auto;margin:0 0 0 1em}.ui.dropdown>.dropdown.icon:before{content:"\f0d7"}.ui.dropdown .menu .item .dropdown.icon{width:auto;float:right;margin:0 0 0 .5em}.ui.dropdown .menu .item .dropdown.icon:before{content:"\f0da"}.ui.dropdown>.text{display:inline-block;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;transition:color .2s ease}.ui.dropdown .menu{left:0}.ui.dropdown .menu .menu{top:0!important;left:100%!important;margin:0!important;border-radius:0 .325em .325em 0!important}.ui.dropdown .menu .menu:after{display:none}.ui.dropdown .menu .item{cursor:pointer;border:none;border-top:1px solid rgba(0,0,0,.05);height:auto;display:block;color:rgba(0,0,0,.75);padding:.85em 1em!important;font-size:.875rem;text-transform:none;font-weight:400;text-align:left;-webkit-touch-callout:none}.ui.dropdown .menu .item:before{display:none}.ui.dropdown .menu .item .icon{margin-right:.75em}.ui.dropdown .menu .item:first-child{border-top:none}.ui.buttons>.ui.dropdown:last-child .menu,.ui.menu .right.menu .dropdown:last-child .menu{left:auto;right:0}.ui.vertical.menu .dropdown.item>.dropdown.icon:before{content:"\f0da"}.ui.dropdown.icon.button>.dropdown.icon{margin:0}.ui.visible.dropdown>.menu{display:block}.ui.dropdown .menu .item.selected,.ui.dropdown .menu .item:hover{background-color:rgba(0,0,0,.02);z-index:12}.ui.dropdown .menu .active.item{background-color:rgba(0,0,0,.06)!important;border-left:none;border-color:transparent!important;-moz-shadow:none;-webkit-box-shadow:none;box-shadow:none;z-index:12}.ui.default.dropdown>.text,.ui.dropdown>.default.text{color:rgba(0,0,0,.5)}.ui.default.dropdown:hover>.text,.ui.dropdown:hover>.default.text{color:rgba(0,0,0,.8)}.ui.dropdown.error,.ui.dropdown.error>.default.text,.ui.dropdown.error>.text{color:#D95C5C!important}.ui.dropdown.error>.menu,.ui.dropdown.error>.menu .menu{-webkit-box-shadow:0 0 1px 1px #E7BEBE!important;box-shadow:0 0 1px 1px #E7BEBE!important}.ui.dropdown.error>.menu .item{color:#D95C5C!important}.ui.dropdown.error>.menu .item:hover{background-color:#FFF2F2!important}.ui.dropdown.error>.menu .active.item{background-color:#FDCFCF!important}.ui.simple.dropdown .menu:after,.ui.simple.dropdown .menu:before{display:none}.ui.simple.dropdown .menu{display:block;overflow:hidden;top:-9999px!important;position:absolute;opacity:0;width:0;height:0;-webkit-transition:opacity .2s ease-out;-moz-transition:opacity .2s ease-out;transition:opacity .2s ease-out}.ui.simple.active.dropdown,.ui.simple.dropdown:hover{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.simple.active.dropdown>.menu,.ui.simple.dropdown:hover>.menu{overflow:visible;width:auto;height:auto;top:100%!important;opacity:1}.ui.simple.dropdown:hover>.menu .item:hover>.menu,.ui.simple.dropdown>.menu .item:active>.menu{overflow:visible;width:auto;height:auto;top:0!important;left:100%!important;opacity:1}.ui.simple.disabled.dropdown:hover .menu{display:none;height:0;width:0;overflow:hidden}.ui.selection.dropdown{cursor:pointer;display:inline-block;word-wrap:break-word;white-space:normal;background-color:#FFF;padding:.65em 1em;line-height:1.33;color:rgba(0,0,0,.8);-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1)!important;box-shadow:0 0 0 1px rgba(0,0,0,.1)!important;border-radius:.3125em!important}.ui.selection.dropdown select{display:none}.ui.selection.dropdown>.dropdown.icon{opacity:.7;margin:.2em 0 .2em 1.25em;-webkit-transition:opacity .2s ease-out;-moz-transition:opacity .2s ease-out;transition:opacity .2s ease-out}.ui.selection.dropdown,.ui.selection.dropdown .menu{-webkit-transition:-webkit-box-shadow .2s ease-out;-moz-transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out}.ui.selection.dropdown .menu{top:100%;max-height:312px;overflow-x:hidden;overflow-y:auto;-webkit-box-shadow:0 1px 0 1px #E0E0E0;box-shadow:0 1px 0 1px #E0E0E0;border-radius:0 0 .325em .325em}.ui.selection.dropdown .menu:after,.ui.selection.dropdown .menu:before{display:none}.ui.selection.dropdown .menu img{height:2.5em;display:inline-block;vertical-align:middle;margin-right:.5em}.ui.selection.dropdown.error,.ui.selection.dropdown.error .item{background-color:snow;color:#D95C5C}.ui.selection.dropdown.error{-webkit-box-shadow:0 0 0 1px #e7bebe!important;box-shadow:0 0 0 1px #e7bebe!important}.ui.selection.dropdown.error .menu{-webkit-box-shadow:0 1px 0 1px #E7BEBE;box-shadow:0 1px 0 1px #E7BEBE;border-radius:0 0 .325em .325em}.ui.selection.dropdown.error .menu .active.item{background-color:#FDCFCF!important}.ui.selection.dropdown:hover{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2)!important;box-shadow:0 0 0 1px rgba(0,0,0,.2)!important}.ui.selection.dropdown:hover .menu{-webkit-box-shadow:0 1px 0 1px #D3D3D3;box-shadow:0 1px 0 1px #D3D3D3}.ui.selection.dropdown:hover>.dropdown.icon{opacity:1}.ui.selection.dropdown.error:hover{-webkit-box-shadow:0 0 0 1px #e7bebe!important;box-shadow:0 0 0 1px #e7bebe!important}.ui.selection.dropdown.error:hover .menu{-webkit-box-shadow:0 1px 0 1px #E7BEBE;box-shadow:0 1px 0 1px #E7BEBE}.ui.selection.dropdown.error .menu .item.selected,.ui.selection.dropdown.error .menu .item:hover{background-color:#FFF2F2}.ui.visible.selection.dropdown{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.active.selection.dropdown{border-radius:.3125em .3125em 0 0!important}.ui.active.selection.dropdown>.dropdown.icon{opacity:1}.ui.fluid.dropdown{display:block}.ui.fluid.dropdown>.dropdown.icon{float:right}.ui.inline.dropdown{cursor:pointer;display:inline-block;color:inherit}.ui.inline.dropdown .dropdown.icon{margin:0 .5em 0 .25em}.ui.inline.dropdown .text{font-weight:700}.ui.inline.dropdown .menu{cursor:auto;margin-top:.25em;border-radius:.325em}.ui.floating.dropdown .menu{left:0;right:auto;margin-top:.5em!important;border-radius:.325em}.ui.pointing.dropdown .menu{top:100%;margin-top:.75em;border-radius:.325em}.ui.pointing.dropdown .menu:after{display:block;position:absolute;pointer-events:none;content:" ";visibility:visible;width:.5em;height:.5em;-webkit-box-shadow:-1px -1px 0 1px rgba(0,0,0,.05);box-shadow:-1px -1px 0 1px rgba(0,0,0,.05);background-image:none;background-color:#FFF;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:12}.ui.pointing.dropdown .menu .active.item:first-child{background:-webkit-linear-gradient(transparent,rgba(0,0,0,.03));background:-moz-linear-gradient(transparent,rgba(0,0,0,.03));background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.03)));background:linear-gradient(transparent,rgba(0,0,0,.03))}.ui.pointing.dropdown .menu:after{top:-.25em;left:50%;margin:0 0 0 -.25em}.ui.top.left.pointing.dropdown .menu{top:100%;bottom:auto;left:0;right:auto;margin:.75em 0 0}.ui.top.left.pointing.dropdown .menu:after{top:-.25em;left:1.25em;right:auto;margin:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.ui.top.right.pointing.dropdown .menu{top:100%;bottom:auto;right:0;left:auto;margin:.75em 0 0}.ui.top.right.pointing.dropdown .menu:after{top:-.25em;left:auto;right:1.25em;margin:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.ui.left.pointing.dropdown .menu{top:0;left:100%;right:auto;margin:0 0 0 .75em}.ui.left.pointing.dropdown .menu:after{top:1em;left:-.25em;margin:0;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.ui.right.pointing.dropdown .menu{top:0;left:auto;right:100%;margin:0 .75em 0 0}.ui.right.pointing.dropdown .menu:after{top:1em;left:auto;right:-.25em;margin:0;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.ui.modal{display:none;position:fixed;z-index:1001;top:50%;left:50%;text-align:left;width:90%;margin-left:-45%;background-color:#FFF;border:1px solid #DDD;border-radius:5px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.modal>.close{cursor:pointer;position:absolute;z-index:1;opacity:.8;font-size:1.25em;top:-1.75em;right:-1.75em;color:#FFF}.ui.modal>.close:hover{opacity:1}.ui.modal>.header{margin:0;padding:1.5rem 2rem;font-size:1.6em;font-weight:700;border-radius:.325em .325em 0 0}.ui.modal>.content{display:table;width:100%;position:relative;padding:2em;background-color:#F4F4F4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.modal>.content>.left:not(.ui){display:table-cell;padding-right:1.5%;min-width:25%}.ui.modal>.content>.right:not(.ui){display:table-cell;padding-left:1.5%;vertical-align:top}.ui.modal>.content>.left:not(.ui)>i.icon{font-size:8em;margin:0}.ui.modal>.content p{line-height:1.6}.ui.modal .actions{padding:1rem 2rem;text-align:right}.ui.modal .actions>.button{margin-left:.75em}@media only screen and (max-width:768px){.ui.modal .content>.left:not(.ui){display:block;padding:0 0 1em}.ui.modal .content>.right:not(.ui){display:block;padding:1em 0 0;-webkit-box-shadow:none;box-shadow:none}.ui.modal .content .image{width:auto!important;max-width:100%}.ui.modal .actions{padding-bottom:0}.ui.modal .actions>.button,.ui.modal .actions>.buttons{margin-bottom:1em}}@media only screen and (max-width:998px){.ui.modal{width:92%;margin-left:-46%}.ui.modal>.close{color:rgba(0,0,0,.8);top:1.5rem;right:1rem}}@media only screen and (min-width:998px){.ui.modal{width:74%;margin-left:-37%}}@media only screen and (min-width:1500px){.ui.modal{width:56%;margin-left:-28%}}@media only screen and (min-width:1750px){.ui.modal{width:42%;margin-left:-21%}}@media only screen and (min-width:2000px){.ui.modal{width:36%;margin-left:-18%}}.ui.basic.modal{background-color:transparent;border:none;color:#FFF}.ui.basic.modal>.close{top:1.5rem;right:1rem}.ui.basic.modal .content{background-color:transparent}.ui.modal.scrolling{position:absolute;margin-top:10px}.ui.active.modal{display:block}.ui.small.modal>.header{font-size:1.3em}@media only screen and (min-width:998px){.ui.small.modal{width:58%;margin-left:-29%}}@media only screen and (min-width:1500px){.ui.small.modal{width:40%;margin-left:-20%}}@media only screen and (min-width:1750px){.ui.small.modal{width:26%;margin-left:-13%}}@media only screen and (min-width:2000px){.ui.small.modal{width:20%;margin-left:-10%}}@media only screen and (min-width:998px){.ui.large.modal{width:74%;margin-left:-37%}}@media only screen and (min-width:1500px){.ui.large.modal{width:64%;margin-left:-32%}}@media only screen and (min-width:1750px){.ui.large.modal{width:54%;margin-left:-27%}}@media only screen and (min-width:2000px){.ui.large.modal{width:44%;margin-left:-22%}}.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:101;min-height:0;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;line-height:3em;padding:0 1em;background-color:#555;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.2);box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1em;text-align:center;color:rgba(255,255,255,.8);border-radius:0 0 5px 5px;-webkit-transition:.2s background;-moz-transition:.2s background;transition:.2s background}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#FFF}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;margin-top:-.5em;color:#FFF;-webkit-transition:.1s opacity;-moz-transition:.1s opacity;transition:.1s opacity}.ui.nag .close:hover,.ui.nag:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag{border-radius:5px 5px 0 0}.ui.fixed.bottom.nag,.ui.fixed.bottom.nags{top:auto;bottom:0}.ui.white.nag,.ui.white.nags .nag{background-color:#F1F1F1;text-shadow:0 1px 0 rgba(255,255,255,.8);color:#ACACAC}.ui.white.nag .close,.ui.white.nag .title,.ui.white.nags .nag .close,.ui.white.nags .nag .title{color:#333}.ui.nags .nag{border-radius:0}.ui.popup{display:none;position:absolute;top:0;right:0;z-index:900;border:1px solid rgba(0,0,0,.1);max-width:250px;background-color:#FFF;padding:.8em 1.2em;font-size:.875rem;font-weight:400;font-style:normal;color:rgba(0,0,0,.7);border-radius:.2em;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.ui.popup .header{padding:0 0 .5em;font-size:1.125em;line-height:1.2;font-weight:700}.ui.popup:before{position:absolute;content:"";width:.75em;height:.75rem;background-image:none;background-color:#FFF;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.1);box-shadow:1px 1px 1px rgba(0,0,0,.1)}.ui.popup .ui.button{width:100%}.ui.popup{margin:0}.ui.popup.bottom{margin:.75em 0 0}.ui.popup.top{margin:0 0 .75em}.ui.popup.left.center{margin:0 .75em 0 0}.ui.popup.right.center{margin:0 0 0 .75em}.ui.popup.center{margin-left:-1.25em}.ui.bottom.center.popup:before{margin-left:-.4em;top:-.4em;left:50%;right:auto;bottom:auto;-webkit-box-shadow:-1px -1px 1px rgba(0,0,0,.2);box-shadow:-1px -1px 1px rgba(0,0,0,.2)}.ui.bottom.left.popup{margin-right:-2em}.ui.bottom.left.popup:before{top:-.4em;right:1em;bottom:auto;left:auto;margin-left:0;-webkit-box-shadow:-1px -1px 1px rgba(0,0,0,.2);box-shadow:-1px -1px 1px rgba(0,0,0,.2)}.ui.bottom.right.popup{margin-left:-2em}.ui.bottom.right.popup:before{top:-.4em;left:1em;right:auto;bottom:auto;margin-left:0;-webkit-box-shadow:-1px -1px 1px rgba(0,0,0,.2);box-shadow:-1px -1px 1px rgba(0,0,0,.2)}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.4em;left:50%;margin-left:-.4em}.ui.top.left.popup{margin-right:-2em}.ui.top.left.popup:before{bottom:-.4em;right:1em;top:auto;left:auto;margin-left:0}.ui.top.right.popup{margin-left:-2em}.ui.top.right.popup:before{bottom:-.4em;left:1em;top:auto;right:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.35em;bottom:auto;left:auto;margin-top:-.4em;-webkit-box-shadow:1px -1px 1px rgba(0,0,0,.2);box-shadow:1px -1px 1px rgba(0,0,0,.2)}.ui.right.center.popup:before{top:50%;left:-.35em;bottom:auto;right:auto;margin-top:-.4em;-webkit-box-shadow:-1px 1px 1px rgba(0,0,0,.2);box-shadow:-1px 1px 1px rgba(0,0,0,.2)}.ui.loading.popup{display:block;visibility:hidden}.ui.animating.popup,.ui.visible.popup{display:block}.ui.small.popup{font-size:.75rem}.ui.large.popup{font-size:1rem}.ui.inverted.popup{background-color:#333;border:none;color:#FFF;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.popup .header{background-color:rgba(0,0,0,.2);color:#FFF}.ui.inverted.popup:before{background-color:#333;-webkit-box-shadow:none;box-shadow:none}.ui.rating{display:inline-block;font-size:0;vertical-align:middle;margin:0 .5rem 0 0}.ui.rating:last-child{margin-right:0}.ui.rating:before{display:block;content:'';visibility:hidden;clear:both;height:0}.ui.rating .icon{cursor:pointer;margin:0;width:1em;height:auto;padding:0;color:rgba(0,0,0,.15);font-weight:400;font-style:normal}.ui.rating .icon:before{content:"\2605"}.ui.star.rating .icon{width:1.2em}.ui.star.rating .icon:before{content:'\f006';font-family:Icons}.ui.star.rating .active.icon:before{content:'\f005';font-family:Icons}.ui.heart.rating .icon{width:1.2em}.ui.heart.rating .icon:before{content:'\f08a';font-family:Icons}.ui.heart.rating .active.icon:before{content:'\f004';font-family:Icons}.ui.heart.rating .active.icon{color:#EF404A!important}.ui.heart.rating .active.hover.icon,.ui.heart.rating .hover.icon{color:#FF2733!important}.ui.disabled.rating .icon{cursor:default}.ui.rating .active.icon{color:#FFCB08!important}.ui.rating.hover .active.icon{opacity:.5}.ui.rating .icon.hover,.ui.rating .icon.hover.active{opacity:1;color:#FFB70A!important}.ui.small.rating .icon{font-size:.75rem}.ui.rating .icon{font-size:1rem}.ui.large.rating .icon{font-size:1.5rem;vertical-align:middle}.ui.huge.rating .icon{font-size:2rem;vertical-align:middle}.ui.search{position:relative;text-shadow:none;font-style:normal;font-weight:400}.ui.search input{border-radius:500rem}.ui.search>.button{position:relative;z-index:2;float:right;margin:0 0 0 -15px;padding:6px 15px 7px;border-radius:0 15px 15px 0;-webkit-box-shadow:none;box-shadow:none}.ui.search .results{display:none;position:absolute;z-index:999;top:100%;left:0;overflow:hidden;background-color:#FFF;margin-top:.5em;width:380px;font-size:.875em;line-height:1.2;color:#555;border-radius:3px;-webkit-box-shadow:0 0 1px 1px rgba(0,0,0,.1),0 -2px 0 0 rgba(0,0,0,.1) inset;box-shadow:0 0 1px 1px rgba(0,0,0,.1),0 -2px 0 0 rgba(0,0,0,.1) inset}.ui.search .result{cursor:pointer;overflow:hidden;padding:.5em 1em}.ui.search .result:first-child{border-top:none}.ui.search .result .image{background:#F0F0F0;margin-right:10px;float:left;overflow:hidden;border-radius:3px;width:38px;height:38px}.ui.search .result .image img{display:block;width:38px;height:38px}.ui.search .result .image~.info{float:none;margin-left:50px}.ui.search .result .info{float:left}.ui.search .result .title{font-weight:700;color:rgba(0,0,0,.8)}.ui.search .result .description{color:rgba(0,0,0,.6)}.ui.search .result .price{float:right;color:#5BBD72;font-weight:700}.ui.search .message{padding:1em}.ui.search .message .text .title{margin:0 0 .5rem;font-size:1.25rem;font-weight:700;color:rgba(0,0,0,.8)}.ui.search .message .text .description{margin:0;font-size:1rem;color:rgba(0,0,0,.5)}.ui.search .results .category{background-color:#FAFAFA;border-top:1px solid rgba(0,0,0,.1);-webkit-transition:background .2s ease-in;-moz-transition:background .2s ease-in;transition:background .2s ease-in}.ui.search .results .category:first-child{border-top:none}.ui.search .results .category>.name{float:left;padding:12px 0 0 8px;font-weight:700;color:#777;text-shadow:0 1px 0 rgba(255,255,255,.8)}.ui.search .results .category .result{background-color:#FFF;margin-left:80px;border-left:1px solid rgba(0,0,0,.1)}.ui.search .all{display:block;border-top:1px solid rgba(0,0,0,.1);background-color:#FAFAFA;height:2em;line-height:2em;color:rgba(0,0,0,.6);font-weight:700;text-align:center}.ui.search .category .result:hover,.ui.search .result:hover{background-color:#F8F8F8}.ui.search .all:hover{background-color:#F0F0F0}.ui.search.loading .input .icon{background:url(../images/loader-mini.gif) 50% 50% no-repeat}.ui.search.loading .input .icon:after,.ui.search.loading .input .icon:before{display:none}.ui.search .results .category.active{background-color:#F1F1F1}.ui.search .results .category.active>.name{color:#333}.ui.search .category .result.active,.ui.search .result.active{background-color:#FBFBFB}.ui.search .result.active .title{color:#000}.ui.search .result.active .description{color:#555}.ui.search .large.result .image,.ui.search .large.result .image img{width:50px;height:50px}.ui.search .large.results .indented.info{margin-left:65px}.ui.search .large.results .info .title{font-size:16px}.ui.search .large.results .info .description{font-size:11px}.ui.shape{display:inline-block;position:relative;-webkit-perspective:2000px;-moz-perspective:2000px;-ms-perspective:2000px;perspective:2000px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.shape .sides{-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:none}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#E6E6E6;color:rgba(0,0,0,.6);-webkit-box-shadow:0 0 2px rgba(0,0,0,.3);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;z-index:100}.ui.shape .hidden.side{opacity:.4}.ui.shape.animating{-webkit-transition:all .6s ease-in-out;-moz-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.ui.shape.animating .sides{position:absolute;-webkit-transition:all .6s ease-in-out;-moz-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;-moz-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block}body{-webkit-transition:margin .3s ease,-webkit-transform .3s ease;-moz-transition:margin .3s ease,-moz-transform .3s ease;transition:margin .3s ease,transform .3s ease}.ui.sidebar{position:fixed;margin:0!important;height:100%!important;border-radius:0!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-ms-overflow-y:auto;overflow-y:auto;top:0;left:0;z-index:999;-webkit-transition:margin-left .3s ease,margin-top .3s ease;-moz-transition:margin-left .3s ease,margin-top .3s ease;transition:margin-left .3s ease,margin-top .3s ease}body.pushed.scrolling.ui.dimmable{position:static}.ui.right.sidebar,.ui.right.thin.sidebar,.ui.right.very.thin.sidebar,.ui.right.very.wide.sidebar,.ui.right.wide.sidebar{left:100%;margin:0!important}.ui.top.sidebar{width:100%!important}.ui.bottom.sidebar{width:100%!important;top:100%;margin:0!important}.ui.active.bottom.sidebar,.ui.active.top.sidebar{margin-top:0!important}.ui.styled.sidebar{padding:1em 1.5em;background-color:#FFF;-webkit-box-shadow:1px 0 0 rgba(0,0,0,.1);box-shadow:1px 0 0 rgba(0,0,0,.1)}.ui.styled.very.thin.sidebar{padding:.5em}.ui.styled.thin.sidebar{padding:1em}.ui.floating.sidebar{-webkit-box-shadow:2px 0 2px rgba(0,0,0,.2);box-shadow:2px 0 2px rgba(0,0,0,.2)}.ui.right.floating.sidebar{-webkit-box-shadow:-2px 0 2px rgba(0,0,0,.2);box-shadow:-2px 0 2px rgba(0,0,0,.2)}.ui.top.floating.sidebar{-webkit-box-shadow:0 4px 4px rgba(0,0,0,.2);box-shadow:0 4px 4px rgba(0,0,0,.2)}.ui.bottom.floating.sidebar{-webkit-box-shadow:0 -4px 4px rgba(0,0,0,.2);box-shadow:0 -4px 4px rgba(0,0,0,.2)}.ui.very.thin.sidebar{width:60px!important;margin-left:-60px!important}.ui.active.very.thin.sidebar{margin-left:0!important}.ui.active.right.very.thin.sidebar{margin-left:-60px!important}.ui.thin.sidebar{width:200px!important;margin-left:-200px!important}.ui.active.thin.sidebar{margin-left:0!important}.ui.active.right.thin.sidebar{margin-left:-200px!important}.ui.sidebar{width:275px!important;margin-left:-275px!important}.ui.active.sidebar{margin-left:0!important}.ui.active.right.sidebar{margin-left:-275px!important}.ui.wide.sidebar{width:350px!important;margin-left:-350px!important}.ui.active.wide.sidebar{margin-left:0!important}.ui.active.right.wide.sidebar{margin-left:-350px!important}.ui.very.wide.sidebar{width:475px!important;margin-left:-475px!important}.ui.active.very.wide.sidebar{margin-left:0!important}.ui.active.right.very.wide.sidebar{margin-left:-475px!important}.ui.top.sidebar{margin:-40px 0 0!important}.ui.bottom.sidebar,.ui.top.sidebar{height:40px!important}.ui.active.bottom.sidebar{margin-top:-40px!important}.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px;text-indent:-10000px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading:after{position:absolute;top:50px;left:50%;content:'Loading...';margin-left:-32px;text-indent:5px;color:rgba(0,0,0,.4);width:100%;height:100%;padding-top:75px;background:url(../images/loader-large.gif) no-repeat;visibility:visible}.ui.transition{-webkit-animation-iteration-count:1;-moz-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:1s;-moz-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:ease;-moz-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;animation-fill-mode:both}.ui.animating.transition{display:block;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);transform:translateZ(0)}.ui.loading.transition{position:absolute;top:-999999px;left:-99999px}.ui.hidden.transition{display:none!important}.ui.visible.transition{display:block;visibility:visible}.ui.disabled.transition{-webkit-animation-play-state:paused;-moz-animation-play-state:paused;animation-play-state:paused}.ui.looping.transition{-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;animation-iteration-count:infinite}.ui.flash.transition{-webkit-animation-name:flash;-moz-animation-name:flash;animation-name:flash}.ui.shake.transition{-webkit-animation-name:shake;-moz-animation-name:shake;animation-name:shake}.ui.bounce.transition{-webkit-animation-name:bounce;-moz-animation-name:bounce;animation-name:bounce}.ui.tada.transition{-webkit-animation-name:tada;-moz-animation-name:tada;animation-name:tada}.ui.pulse.transition{-webkit-animation-name:pulse;-moz-animation-name:pulse;animation-name:pulse}.ui.flip.transition.in,.ui.flip.transition.out{-webkit-perspective:2000px;-moz-perspective:2000px;perspective:2000px}.ui.horizontal.flip.transition.in,.ui.horizontal.flip.transition.out{-webkit-animation-name:horizontalFlip;-moz-animation-name:horizontalFlip;animation-name:horizontalFlip}.ui.horizontal.flip.transition.out{-webkit-animation-name:horizontalFlipOut;-moz-animation-name:horizontalFlipOut;animation-name:horizontalFlipOut}.ui.vertical.flip.transition.in,.ui.vertical.flip.transition.out{-webkit-animation-name:verticalFlip;-moz-animation-name:verticalFlip;animation-name:verticalFlip}.ui.vertical.flip.transition.out{-webkit-animation-name:verticalFlipOut;-moz-animation-name:verticalFlipOut;animation-name:verticalFlipOut}.ui.fade.transition.in{-webkit-animation-name:fade;-moz-animation-name:fade;animation-name:fade}.ui.fade.transition.out{-webkit-animation-name:fadeOut;-moz-animation-name:fadeOut;animation-name:fadeOut}.ui.fade.up.transition.in{-webkit-animation-name:fadeUp;-moz-animation-name:fadeUp;animation-name:fadeUp}.ui.fade.up.transition.out{-webkit-animation-name:fadeUpOut;-moz-animation-name:fadeUpOut;animation-name:fadeUpOut}.ui.fade.down.transition.in{-webkit-animation-name:fadeDown;-moz-animation-name:fadeDown;animation-name:fadeDown}.ui.fade.down.transition.out{-webkit-animation-name:fadeDownOut;-moz-animation-name:fadeDownOut;animation-name:fadeDownOut}.ui.fade.left.transition.in{-webkit-animation-name:fadeLeft;-moz-animation-name:fadeLeft;animation-name:fadeLeft}.ui.fade.left.transition.out{-webkit-animation-name:fadeLeftOut;-moz-animation-name:fadeLeftOut;animation-name:fadeLeftOut}.ui.fade.right.transition.in{-webkit-animation-name:fadeRight;-moz-animation-name:fadeRight;animation-name:fadeRight}.ui.fade.right.transition.out{-webkit-animation-name:fadeRightOut;-moz-animation-name:fadeRightOut;animation-name:fadeRightOut}.ui.scale.transition.in{-webkit-animation-name:scale;-moz-animation-name:scale;animation-name:scale}.ui.scale.transition.out{-webkit-animation-name:scaleOut;-moz-animation-name:scaleOut;animation-name:scaleOut}.ui.slide.down.transition.in{-webkit-animation-name:slide;-moz-animation-name:slide;animation-name:slide;-moz-transform-origin:50% 0;transform-origin:50% 0;-ms-transform-origin:50% 0;-webkit-transform-origin:50% 0}.ui.slide.down.transition.out{-webkit-animation-name:slideOut;-moz-animation-name:slideOut;animation-name:slideOut;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0}.ui.slide.up.transition.in{-webkit-animation-name:slide;-moz-animation-name:slide;animation-name:slide;-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%}.ui.slide.up.transition.out{-webkit-animation-name:slideOut;-moz-animation-name:slideOut;animation-name:slideOut;-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%}@-webkit-keyframes slide{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-moz-keyframes slide{0%{opacity:0;-moz-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-moz-transform:scaleY(1);transform:scaleY(1)}}@keyframes slide{0%{opacity:0;-webkit-transform:scaleY(0);-moz-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);-moz-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes slideOut{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@-moz-keyframes slideOut{0%{opacity:1;-moz-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-moz-transform:scaleY(0);transform:scaleY(0)}}@keyframes slideOut{0%{opacity:1;-webkit-transform:scaleY(1);-moz-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);-moz-transform:scaleY(0);transform:scaleY(0)}}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-moz-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@-moz-keyframes shake{0%,100%{-moz-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-moz-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-moz-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-moz-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-moz-transform:translateX(10px);transform:translateX(10px)}}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@-moz-keyframes bounce{0%,100%,20%,50%,80%{-moz-transform:translateY(0);transform:translateY(0)}40%{-moz-transform:translateY(-30px);transform:translateY(-30px)}60%{-moz-transform:translateY(-15px);transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);-moz-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);-moz-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);-moz-transform:translateY(-15px);transform:translateY(-15px)}}@-webkit-keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@-moz-keyframes tada{0%{-moz-transform:scale(1);transform:scale(1)}10%,20%{-moz-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-moz-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);-moz-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);-moz-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);-moz-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);-moz-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(0.9);transform:scale(0.9);opacity:.7}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-moz-keyframes pulse{0%{-moz-transform:scale(1);transform:scale(1);opacity:1}50%{-moz-transform:scale(0.9);transform:scale(0.9);opacity:.7}100%{-moz-transform:scale(1);transform:scale(1);opacity:1}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(0.9);-moz-transform:scale(0.9);transform:scale(0.9);opacity:.7}100%{-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes horizontalFlip{0%{-webkit-transform:rotateY(-90deg);transform:rotateY(-90deg);opacity:0}100%{-webkit-transform:rotateY(0deg);transform:rotateY(0deg);opacity:1}}@-moz-keyframes horizontalFlip{0%{-moz-transform:rotateY(-90deg);transform:rotateY(-90deg);opacity:0}100%{-moz-transform:rotateY(0deg);transform:rotateY(0deg);opacity:1}}@keyframes horizontalFlip{0%{-webkit-transform:rotateY(-90deg);-moz-transform:rotateY(-90deg);transform:rotateY(-90deg);opacity:0}100%{-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);transform:rotateY(0deg);opacity:1}}@-webkit-keyframes horizontalFlipOut{0%{-webkit-transform:rotateY(0deg);transform:rotateY(0deg);opacity:1}100%{-webkit-transform:rotateY(90deg);transform:rotateY(90deg);opacity:0}}@-moz-keyframes horizontalFlipOut{0%{-moz-transform:rotateY(0deg);transform:rotateY(0deg);opacity:1}100%{-moz-transform:rotateY(90deg);transform:rotateY(90deg);opacity:0}}@keyframes horizontalFlipOut{0%{-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);transform:rotateY(0deg);opacity:1}100%{-webkit-transform:rotateY(90deg);-moz-transform:rotateY(90deg);transform:rotateY(90deg);opacity:0}}@-webkit-keyframes verticalFlip{0%{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);opacity:0}100%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@-moz-keyframes verticalFlip{0%{-moz-transform:rotateX(-90deg);transform:rotateX(-90deg);opacity:0}100%{-moz-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@keyframes verticalFlip{0%{-webkit-transform:rotateX(-90deg);-moz-transform:rotateX(-90deg);transform:rotateX(-90deg);opacity:0}100%{-webkit-transform:rotateX(0deg);-moz-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}}@-webkit-keyframes verticalFlipOut{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}100%{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);opacity:0}}@-moz-keyframes verticalFlipOut{0%{-moz-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}100%{-moz-transform:rotateX(-90deg);transform:rotateX(-90deg);opacity:0}}@keyframes verticalFlipOut{0%{-webkit-transform:rotateX(0deg);-moz-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}100%{-webkit-transform:rotateX(-90deg);-moz-transform:rotateX(-90deg);transform:rotateX(-90deg);opacity:0}}@-webkit-keyframes fade{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fade{0%{opacity:0}100%{opacity:1}}@keyframes fade{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeUp{0%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes fadeUp{0%{opacity:0;-moz-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0);transform:translateY(0)}}@keyframes fadeUp{0%{opacity:0;-webkit-transform:translateY(20px);-moz-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeUpOut{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}}@-moz-keyframes fadeUpOut{0%{opacity:1;-moz-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(20px);transform:translateY(20px)}}@keyframes fadeUpOut{0%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);-moz-transform:translateY(20px);transform:translateY(20px)}}@-webkit-keyframes fadeDown{0%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes fadeDown{0%{opacity:0;-moz-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-moz-transform:translateY(0);transform:translateY(0)}}@keyframes fadeDown{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeDownOut{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}}@-moz-keyframes fadeDownOut{0%{opacity:1;-moz-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-20px);transform:translateY(-20px)}}@keyframes fadeDownOut{0%{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);transform:translateY(-20px)}}@-webkit-keyframes fadeLeft{0%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-moz-keyframes fadeLeft{0%{opacity:0;-moz-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-moz-transform:translateX(0);transform:translateX(0)}}@keyframes fadeLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-moz-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeLeftOut{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}}@-moz-keyframes fadeLeftOut{0%{opacity:1;-moz-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-20px);transform:translateX(-20px)}}@keyframes fadeLeftOut{0%{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);-moz-transform:translateX(-20px);transform:translateX(-20px)}}@-webkit-keyframes fadeRight{0%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-moz-keyframes fadeRight{0%{opacity:0;-moz-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-moz-transform:translateX(0);transform:translateX(0)}}@keyframes fadeRight{0%{opacity:0;-webkit-transform:translateX(20px);-moz-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeRightOut{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}}@-moz-keyframes fadeRightOut{0%{opacity:1;-moz-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(20px);transform:translateX(20px)}}@keyframes fadeRightOut{0%{opacity:1;-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);-moz-transform:translateX(20px);transform:translateX(20px)}}@-webkit-keyframes scale{0%{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-moz-keyframes scale{0%{opacity:0;-moz-transform:scale(0.7);transform:scale(0.7)}100%{opacity:1;-moz-transform:scale(1);transform:scale(1)}}@keyframes scale{0%{opacity:0;-webkit-transform:scale(0.7);-moz-transform:scale(0.7);transform:scale(0.7)}100%{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1)}}@-webkit-keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0.7);transform:scale(0.7)}}@-moz-keyframes scaleOut{0%{opacity:1;-moz-transform:scale(1);transform:scale(1)}100%{opacity:0;-moz-transform:scale(0.7);transform:scale(0.7)}}@keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0.7);-moz-transform:scale(0.7);transform:scale(0.7)}}.ui.video{position:relative;max-width:100%}.ui.video .placeholder{background-color:#333}.ui.video .play{cursor:pointer;position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;-ms-filter:"alpha(Opacity=60)";filter:alpha(opacity=60);opacity:.6;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s}.ui.video .play.icon:before{position:absolute;top:50%;left:50%;z-index:11;font-size:6rem;margin:-3rem 0 0 -3rem;color:#FFF;text-shadow:0 3px 3px rgba(0,0,0,.4)}.ui.video .placeholder{display:block;width:100%;height:100%}.ui.video .embed{display:none}.ui.video .play:hover{opacity:1}.ui.video.active .placeholder,.ui.video.active .play{display:none}.ui.video.active .embed{display:block}.ui.comments a{cursor:pointer}.ui.comments .comment{position:relative;margin-top:.5em;padding-top:.5em}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .avatar{display:block;float:left;width:4em}.ui.comments .comment .avatar img{display:block;margin:0 auto;width:3em;height:3em;border-radius:500px}.ui.comments .comment>.avatar,.ui.comments .comment>.content{display:block}.ui.comments .comment .avatar~.content{padding:0 1em}.ui.comments .comment>.avatar~.content{padding-top:.25em;margin-left:3.5em}.ui.comments .comment .metadata{display:inline-block;margin-left:.3em;color:rgba(0,0,0,.4)}.ui.comments .comment .metadata>*{display:inline-block;margin:0 .3em 0 0}.ui.comments .comment .text{margin:.25em 0 .5em;word-wrap:break-word}.ui.comments .comment .actions{font-size:.9em}.ui.comments .comment .actions a{display:inline-block;margin:0 .3em 0 0;color:rgba(0,0,0,.3)}.ui.comments .comment .actions a.active,.ui.comments .comment .actions a:hover{color:rgba(0,0,0,.6)}.ui.comments .reply.form{margin-top:.75em;width:100%;max-width:30em}.ui.comments .comment .reply.form{margin-left:2em}.ui.comments>.reply.form{margin-top:1.5em;max-width:40em}.ui.comments .reply.form textarea{height:12em}.ui.comments .comment .comments{margin-top:.5em;padding-top:.5em;padding-bottom:1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments>.comment .comments{margin-left:2em}.ui.comments>.comment>.comments>.comment>.comments{margin-left:1.75em}.ui.comments>.comment>.comments>.comment>.comments>.comment>.comments{margin-left:1.5em}.ui.comments>.comment>.comments>.comment>.comments>.comment>.comments>.comment .comments{margin-left:.5em}.ui.threaded.comments .comment .comments{margin-left:2em!important;padding-left:2em!important;-webkit-box-shadow:-1px 0 0 rgba(0,0,0,.05);box-shadow:-1px 0 0 rgba(0,0,0,.05)}.ui.minimal.comments .comment .actions{opacity:0;-webkit-transition:opacity .1s ease-out;-moz-transition:opacity .1s ease-out;transition:opacity .1s ease-out;-webkit-transition-delay:.1s;-moz-transition-delay:.1s;transition-delay:.1s}.ui.minimal.comments .comment>.content:hover>.actions{opacity:1}.ui.small.comments{font-size:.875em}.ui.feed a{cursor:pointer}.ui.feed,.ui.feed .content,.ui.feed .event,.ui.feed .extra,.ui.feed .label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.feed .event{width:100%;display:table}.ui.feed .event:first-child{border-top:0}.ui.feed .event:last-child{margin-bottom:1em}.ui.feed .label{width:3em;display:table-cell;vertical-align:top;text-align:left}.ui.feed .label .icon{font-size:1.5em;padding:.5em;margin:0}.ui.feed .label img{width:3em;margin:0;border-radius:50em}.ui.feed .label+.content{padding:.75em 1em 0}.ui.feed .content{display:table-cell;vertical-align:top;text-align:left;word-wrap:break-word}.ui.feed .content .date{float:right;padding-left:1em;color:rgba(0,0,0,.4)}.ui.feed .content .summary{color:rgba(0,0,0,.75)}.ui.feed .content .summary img{display:inline-block;margin-right:.25em;width:4em;border-radius:500px}.ui.feed .content .extra{margin:1em 0 0;padding:.5em 0 0;color:rgba(0,0,0,.5)}.ui.feed .content .extra.images img{display:inline-block;margin-right:.25em;width:6em}.ui.feed .content .extra.text{padding:.5em 1em;border-left:.2em solid rgba(0,0,0,.1)}.ui.small.feed{font-size:.875em}.ui.small.feed .label img{width:2.5em}.ui.small.feed .label .icon{font-size:1.25em}.ui.feed .event{padding:.75em 0}.ui.small.feed .label+.content{padding:.5em .5em 0}.ui.small.feed .content .extra.images img{width:5em}.ui.small.feed .content .extra{margin:.5em 0 0}.ui.small.feed .content .extra.text{padding:.25em .5em}.ui.items{margin:1em 0 0}.ui.items:first-child{margin-top:0}.ui.items:last-child{margin-bottom:-1em}.ui.items:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item,.ui.items>.row>.item{display:block;float:left;position:relative;top:0;width:316px;min-height:375px;margin:0 .5em 2.5em;background-color:#FFF;line-height:1.2;font-size:1em;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);border-bottom:.2em solid rgba(0,0,0,.2);border-radius:.33em;-webkit-transition:-webkit-box-shadow .2s ease;-moz-transition:box-shadow .2s ease;transition:box-shadow .2s ease;padding:.5em}.ui.items .item a,.ui.items a.item{cursor:pointer}.ui.items .item,.ui.items .item>.content,.ui.items .item>.content>.extra,.ui.items .item>.content>.meta,.ui.items .item>.image,.ui.items .item>.image .overlay{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.items .item>.image{display:block;position:relative;background-color:rgba(0,0,0,.05);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:.2em}.ui.items .item>.image>img{display:block;width:100%}.ui.items .item>.content{padding:.75em .5em}.ui.items .item>.content>.name{display:block;font-size:1.25em;font-weight:700;margin-bottom:.2em;color:rgba(0,0,0,.7)}.ui.items .item>.content>.description{clear:both;margin:0;color:rgba(0,0,0,.45)}.ui.items .item>.content>.description p{margin:0 0 .2em}.ui.items .item>.content>.description p:last-child{margin-bottom:0}.ui.items .item .meta{float:right;color:rgba(0,0,0,.35)}.ui.items .item>.content>.meta+.name{float:left}.ui.items .item .star.label:hover::after{border-right-color:#F6EFC3;border-top-color:#F6EFC3}.ui.items .item .star.label:hover .icon{color:#ac9400}.ui.items .item .star.label.active::after{border-right-color:#F6EFC3;border-top-color:#F6EFC3}.ui.items .item .star.label.active .icon{color:#ac9400}.ui.items .item .like.label:hover::after{border-right-color:#F5E1E2}.ui.items .item .like.label:hover .icon{color:#ef404a}.ui.items .item .like.label.active::after{border-right-color:#F5E1E2;border-top-color:#F5E1E2}.ui.items .item .like.label.active .icon{color:#ef404a}.ui.items .item .extra{position:absolute;width:100%;padding:0 .5em;bottom:-2em;left:0;height:1.5em;color:rgba(0,0,0,.25);-webkit-transition:color .2s ease;-moz-transition:color .2s ease;transition:color .2s ease}.ui.items .item .extra>img{display:inline-block;border-radius:500px;margin-right:.25em;vertical-align:middle;width:2em}.ui.items .item .extra .left{float:left}.ui.items .item .extra .right{float:right}.ui.items .item:hover{cursor:pointer;z-index:5;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.ui.items .item:hover .extra{color:rgba(0,0,0,.5)}.ui.items .item:nth-of-type(6n+1):hover{border-bottom-color:#6ECFF5!important}.ui.items .item:nth-of-type(6n+2):hover{border-bottom-color:#5C6166!important}.ui.items .item:nth-of-type(6n+3):hover{border-bottom-color:#A1CF64!important}.ui.items .item:nth-of-type(6n+4):hover{border-bottom-color:#D95C5C!important}.ui.items .item:nth-of-type(6n+5):hover{border-bottom-color:#00B5AD!important}.ui.items .item:nth-of-type(6n+6):hover{border-bottom-color:#564F8A!important}.ui.connected.items{display:table;width:100%;margin-left:0!important;margin-right:0!important}.ui.connected.items>.item,.ui.connected.items>.row>.item{float:none;display:table-cell;vertical-align:top;height:auto;border-radius:0;margin:0;width:33.33%}.ui.connected.items>.row{display:table;margin:.5em 0}.ui.connected.items>.row:first-child{margin-top:0}.ui.connected.items>.item,.ui.connected.items>.row:last-child>.item{border-bottom:.2em solid rgba(0,0,0,.2)}.ui.connected.items>.item:first-child,.ui.connected.items>.row:last-child>.item:first-child{border-radius:0 0 0 .33em}.ui.connected.items>.item:last-child,.ui.connected.items>.row:last-child>.item:last-child{border-radius:0 0 .33em}.ui.connected.items .item:hover{border-bottom-width:.2em}.ui.one.connected.items>.item,.ui.one.connected.items>.row>.item{width:50%;padding-left:2%;padding-right:2%}.ui.two.connected.items>.item,.ui.two.connected.items>.row>.item{width:50%;padding-left:1%;padding-right:1%}.ui.three.connected.items>.item,.ui.three.connected.items>.row>.item{width:33.333%;padding-left:1%;padding-right:1%}.ui.four.connected.items>.item,.ui.four.connected.items>.row>.item{width:25%;padding-left:.5%;padding-right:.5%}.ui.five.connected.items>.item,.ui.five.connected.items>.row>.item{width:20%;padding-left:.5%;padding-right:.5%}.ui.six.connected.items>.item,.ui.six.connected.items>.row>.item{width:16.66%;padding-left:.5%;padding-right:.5%}.ui.seven.connected.items>.item,.ui.seven.connected.items>.row>.item{width:14.28%;padding-left:.5%;padding-right:.5%}.ui.eight.connected.items>.item,.ui.eight.connected.items>.row>.item{width:12.5%;padding-left:.25%;padding-right:.25%}.ui.nine.connected.items>.item,.ui.nine.connected.items>.row>.item{width:11.11%;padding-left:.25%;padding-right:.25%}.ui.ten.connected.items>.item,.ui.ten.connected.items>.row>.item{width:10%;padding-left:.2%;padding-right:.2%}.ui.eleven.connected.items>.item,.ui.eleven.connected.items>.row>.item{width:9.09%;padding-left:.2%;padding-right:.2%}.ui.twelve.connected.items>.item,.ui.twelve.connected.items>.row>.item{width:8.3333%;padding-left:.1%;padding-right:.1%}@media only screen and (max-width:768px){.ui.stackable.items{display:block!important}.ui.stackable.items>.item,.ui.stackable.items>.row>.item{display:block!important;height:auto!important;width:100%!important;padding:0!important}}.ui.horizontal.items>.item,.ui.items>.horizontal.item{display:table}.ui.horizontal.items>.item>.image,.ui.items>.horizontal.item>.image{display:table-cell;width:50%}.ui.horizontal.items>.item>.image+.content,.ui.items>.horizontal.item>.image+.content{width:50%;display:table-cell}.ui.horizontal.items>.item>.content,.ui.items>.horizontal.item>.content{padding:1% 1.7% 11% 3%;vertical-align:top}.ui.horizontal.items>.item>.meta,.ui.items>.horizontal.item>.meta{position:absolute;padding:0;bottom:7%;left:3%;width:94%}.ui.horizontal.items>.item>.image+.content+.meta,.ui.items>.horizontal.item>.image+.content+.meta{bottom:7%;left:53%;width:44%}.ui.horizontal.items>.item .avatar,.ui.items>.horizontal.item .avatar{width:11.5%}.ui.items>.item .avatar{max-width:25px}.ui.one.items{margin-left:-2%;margin-right:-2%}.ui.one.items>.item{width:100%;margin-left:2%;margin-right:2%}.ui.two.items{margin-left:-1%;margin-right:-1%}.ui.two.items>.item{width:48%;margin-left:1%;margin-right:1%}.ui.two.items>.item:nth-child(2n+1){clear:left}.ui.three.items{margin-left:-1%;margin-right:-1%}.ui.three.items>.item{width:31.333%;margin-left:1%;margin-right:1%}.ui.three.items>.item:nth-child(3n+1){clear:left}.ui.four.items{margin-left:-.5%;margin-right:-.5%}.ui.four.items>.item{width:24%;margin-left:.5%;margin-right:.5%}.ui.four.items>.item:nth-child(4n+1){clear:left}.ui.five.items{margin-left:-.5%;margin-right:-.5%}.ui.five.items>.item{width:19%;margin-left:.5%;margin-right:.5%}.ui.five.items>.item:nth-child(5n+1){clear:left}.ui.six.items{margin-left:-.5%;margin-right:-.5%}.ui.six.items>.item{width:15.66%;margin-left:.5%;margin-right:.5%}.ui.six.items>.item:nth-child(6n+1){clear:left}.ui.seven.items{margin-left:-.5%;margin-right:-.5%}.ui.seven.items>.item{width:13.28%;margin-left:.5%;margin-right:.5%;font-size:11px}.ui.seven.items>.item:nth-child(7n+1){clear:left}.ui.eight.items{margin-left:-.25%;margin-right:-.25%}.ui.eight.items>.item{width:12%;margin-left:.25%;margin-right:.25%;font-size:11px}.ui.eight.items>.item:nth-child(8n+1){clear:left}.ui.nine.items{margin-left:-.25%;margin-right:-.25%}.ui.nine.items>.item{width:10.61%;margin-left:.25%;margin-right:.25%;font-size:10px}.ui.nine.items>.item:nth-child(9n+1){clear:left}.ui.ten.items{margin-left:-.2%;margin-right:-.2%}.ui.ten.items>.item{width:9.6%;margin-left:.2%;margin-right:.2%;font-size:10px}.ui.ten.items>.item:nth-child(10n+1){clear:left}.ui.eleven.items{margin-left:-.2%;margin-right:-.2%}.ui.eleven.items>.item{width:8.69%;margin-left:.2%;margin-right:.2%;font-size:9px}.ui.eleven.items>.item:nth-child(11n+1){clear:left}.ui.twelve.items{margin-left:-.1%;margin-right:-.1%}.ui.twelve.items>.item{width:8.1333%;margin-left:.1%;margin-right:.1%;font-size:9px}.ui.twelve.items>.item:nth-child(12n+1){clear:left}.ui.list,ol.ui.list,ul.ui.list{list-style-type:none;margin:1em 0;padding:0}.ui.list .list,ol.ui.list ol,ul.ui.list ul{margin:0;padding:.5em 0 .5em 1em}.ui.list:first-child,ol.ui.list:first-child,ul.ui.list:first-child{margin-top:0}.ui.list:last-child,ol.ui.list:last-child,ul.ui.list:last-child{margin-bottom:0}.ui.list .item,ol.ui.list li,ul.ui.list li{display:list-item;list-style-type:none;list-style-position:inside;padding:.3em 0;line-height:1.2em}.ui.list .item:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.list .list{clear:both}.ui.list .item>.icon{display:block;float:left;margin:0 1em 0 0;padding:.1em 0 0}.ui.list .item>.icon:only-child{display:inline-block}.ui.horizontal.list .item>.icon{margin:0;padding:0 .25em 0 0}.ui.horizontal.list .item>.icon,.ui.horizontal.list .item>.icon+.content{float:none;display:inline-block}.ui.list .item>img{display:block;float:left;margin-right:1em;vertical-align:middle}.ui.list .item>.content{display:inline-block;vertical-align:middle;line-height:1.2em}.ui.list .item>.icon+.content{display:table-cell;vertical-align:top}.ui.list a{cursor:pointer}.ui.list a .icon{color:rgba(0,0,0,.6);-webkit-transition:color .2s ease;-moz-transition:color .2s ease;transition:color .2s ease}.ui.list .header{font-weight:700}.ui.list .description{color:rgba(0,0,0,.5)}.ui.list .item>.left.floated{margin-right:1em;float:left}.ui.list .item>.right.floated{margin-left:1em;float:right}.ui.horizontal.list{display:inline-block;font-size:0}.ui.horizontal.list>.item{display:inline-block;margin-left:1em;font-size:1rem}.ui.horizontal.list>.item:first-child{margin-left:0}.ui.horizontal.list .list{padding-left:0;padding-bottom:0}.ui.list a:hover .icon{color:rgba(0,0,0,.8)}.ui.inverted.list a .icon{color:rgba(255,255,255,.6)}.ui.inverted.list .description{color:rgba(255,255,255,.8)}.ui.inverted.link.list .item{color:rgba(255,255,255,.4)}.ui.link.list .item{color:rgba(0,0,0,.3)}.ui.link.list .item a,.ui.link.list a.item{color:rgba(0,0,0,.5)}.ui.link.list .active.item a,.ui.link.list .item a:active,.ui.link.list .item a:hover,.ui.link.list a.active.item,.ui.link.list a.item:active,.ui.link.list a.item:hover{color:rgba(0,0,0,.8)}.ui.inverted.link.list .item a,.ui.inverted.link.list a.item{color:rgba(255,255,255,.6)}.ui.inverted.link.list .item a:hover,.ui.inverted.link.list a.item:hover{color:rgba(255,255,255,.8)}.ui.inverted.link.list .item a:active,.ui.inverted.link.list a.item:active{color:rgba(255,255,255,.9)}.ui.inverted.link.list .active.item a,.ui.inverted.link.list a.active.item{color:rgba(255,255,255,.8)}.ui.selection.list .item{cursor:pointer;color:rgba(0,0,0,.4);padding:.5em;-webkit-transition:.2s color ease,.2s padding-left ease,.2s background-color ease;-moz-transition:.2s color ease,.2s padding-left ease,.2s background-color ease;transition:.2s color ease,.2s padding-left ease,.2s background-color ease}.ui.selection.list .item:hover{background-color:rgba(0,0,0,.02);color:rgba(0,0,0,.7)}.ui.selection.list .item:active{background-color:rgba(0,0,0,.05);color:rgba(0,0,0,.7)}.ui.selection.list .item.active{background-color:rgba(0,0,0,.04);color:rgba(0,0,0,.7)}.ui.animated.list .item{-webkit-transition:.2s color ease,.2s padding-left ease,.2s background-color ease;-moz-transition:.2s color ease,.2s padding-left ease,.2s background-color ease;transition:.2s color ease,.2s padding-left ease,.2s background-color ease}.ui.animated.list:not(.horizontal) .item:hover{padding-left:1em}.ui.animated.list:not(.horizontal) .item:hover .item:hover{padding-left:.5em}.ui.inverted.selection.list .item{color:rgba(255,255,255,.6)}.ui.inverted.selection.list .item:hover{background-color:rgba(255,255,255,.04);color:rgba(255,255,255,.8)}.ui.inverted.selection.list .item:active{background-color:rgba(255,255,255,.1);color:rgba(255,255,255,.7)}.ui.inverted.selection.list .item.active{background-color:rgba(255,255,255,.08);color:#FFF}.ui.bulleted.list,ul.ui.list{margin-left:1.5em}.ui.bulleted.list .item,ul.ui.list li{position:relative}.ui.bulleted.list .item:before,ul.ui.list li:before{position:absolute;left:-1.5em;content:'•'}.ui.bulleted.list .list,ul.ui.list ul{padding-left:1.5em}.ui.horizontal.bulleted.list,ul.ui.horizontal.bulleted.list{margin-left:0}.ui.horizontal.bulleted.list .item,ul.ui.horizontal.bulleted.list li{margin-left:1.5em}.ui.horizontal.bulleted.list .item:before,ul.ui.horizontal.bulleted.list li:before{left:-.9em}.ui.horizontal.bulleted.list .item:first-child,ul.ui.horizontal.bulleted.list li:first-child{margin-left:0}.ui.horizontal.bulleted.list .item:first-child::before,ul.ui.horizontal.bulleted.list li:first-child::before{display:none}.ui.ordered.list,ol.ui.list{counter-reset:ordered;margin-left:2em;list-style-type:none}.ui.ordered.list .item,ol.ui.list li{list-style-type:none;position:relative}.ui.ordered.list .item:before,ol.ui.list li:before{position:absolute;left:-2em;counter-increment:ordered;content:counters(ordered,".");text-align:right;vertical-align:top;opacity:.75}.ui.ordered.list .list,ol.ui.list ol{counter-reset:ordered;padding-left:2.5em}.ui.ordered.list .list .item:before,ol.ui.list ol li:before{left:-2.5em}.ui.ordered.horizontal.list,ol.ui.horizontal.list{margin-left:0}.ui.ordered.horizontal.list .item:before,ol.ui.horizontal.list li:before{position:static;left:0;margin:0 .5em 0 0}.ui.divided.list:not(.horizontal)>.list,.ui.divided.list>.item{border-top:1px solid rgba(0,0,0,.1);padding-left:.5em;padding-right:.5em}.ui.divided.list .item .menu .item{border-width:0}.ui.divided.list .item:first-child{border-top-width:0}.ui.divided.list:not(.horizontal) .list:not(.icon){margin-left:-.5em;margin-right:-.5em}.ui.divided.list:not(.horizontal) .list .item{padding-left:1em;padding-right:1em}.ui.divided.list:not(.horizontal) .list .item:first-child{border-top-width:1px}.ui.divided.bulleted.list{margin-left:0}.ui.divided.bulleted.list .item{padding-left:1.5em}.ui.divided.bulleted.list .item:before{left:.5em}.ui.divided.ordered.list{margin-left:0}.ui.divided.ordered.list>.item{padding-left:2em;padding-right:2em}.ui.divided.ordered.list>.item:before{left:.5em}.ui.divided.ordered.list .item .list{margin-left:-2em;margin-right:-2em}.ui.divided.horizontal.list{margin-left:0}.ui.divided.horizontal.list>.item{border-top:none;border-left:1px solid rgba(0,0,0,.1);margin:0;padding-left:.75em;padding-right:.75em;line-height:.6em}.ui.horizontal.divided.list>.item:first-child{border-left:none;padding-left:0}.ui.divided.inverted.horizontal.list .item,.ui.divided.inverted.list>.item,.ui.divided.inverted.list>.list{border-color:rgba(255,255,255,.2)}.ui.celled.list>.item,.ui.celled.list>.list{border-top:1px solid rgba(0,0,0,.1);padding-left:.5em;padding-right:.5em}.ui.celled.list>.item:last-child{border-bottom:1px solid rgba(0,0,0,.1)}.ui.celled.list .item .list{margin-left:-.5em;margin-right:-.5em}.ui.celled.list .item .list .item{border-width:0}.ui.celled.list .list .item:first-child{border-top-width:0}.ui.celled.bulleted.list{margin-left:0}.ui.celled.bulleted.list>.item{padding-left:1.5em}.ui.celled.bulleted.list>.item:before{left:.5em}.ui.celled.ordered.list{margin-left:0}.ui.celled.ordered.list .item{padding-left:2em;padding-right:2em}.ui.celled.ordered.list .item:before{left:.5em}.ui.celled.ordered.list .item .list{margin-left:-2em;margin-right:-2em}.ui.horizontal.celled.list{margin-left:0}.ui.horizontal.celled.list .item{border-top:none;border-left:1px solid rgba(0,0,0,.1);margin:0;padding-left:.75em;padding-right:.75em;line-height:.6em}.ui.horizontal.celled.list .item:last-child{border-bottom:none;border-right:1px solid rgba(0,0,0,.1)}.ui.celled.inverted.horizontal.list .item,.ui.celled.inverted.list>.item,.ui.celled.inverted.list>.list{border-color:rgba(255,255,255,.2)}.ui.relaxed.list:not(.horizontal) .item{padding-top:.5em;padding-bottom:.5em}.ui.relaxed.list .header{margin-bottom:.25em}.ui.horizontal.relaxed.list .item{padding-left:1.25em;padding-right:1.25em}.ui.very.relaxed.list:not(.horizontal) .item{padding-top:1em;padding-bottom:1em}.ui.very.relaxed.list .header{margin-bottom:.5em}.ui.horizontal.very.relaxed.list .item{padding-left:2em;padding-right:2em}.ui.mini.list .item{font-size:.7rem}.ui.tiny.list .item{font-size:.8125rem}.ui.small.list .item{font-size:.875rem}.ui.list .item{font-size:1em}.ui.large.list .item{font-size:1.125rem}.ui.big.list .item{font-size:1.25rem}.ui.huge.list .item{font-size:1.375rem}.ui.massive.list .item{font-size:1.5rem}.ui.statistic{text-align:center}.ui.statistic>.number{font-size:4em;font-weight:700;color:rgba(0,0,0,.7)}.ui.statistic>.description{opacity:.8} \ No newline at end of file diff --git a/public/css/styles.css b/public/css/styles.css new file mode 100644 index 0000000..b9fc97f --- /dev/null +++ b/public/css/styles.css @@ -0,0 +1,223 @@ +/******************************* + Global +*******************************/ + +html, +body { + font-size: 15px; + height: 100%; +} + +body { + font-family: "Open Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; + background: #FFFFFF; + margin: 0px; + padding: 0px; + color: #555555; + text-rendering: optimizeLegibility; + min-width: 320px; +} + +/******************************* + UI Overrides +*******************************/ + +.ui.header { + font-family: 'Source Sans Pro', "Helvetica Neue", "Helvetica", "Arial", sans-serif; +} + +.ui.header, +h1, +h2 { + font-weight: normal !important; +} + +h1.ui.header { + font-size: 3em; +} + +h4.ui.header, +h5.ui.header, +.ui.icon.header { + font-weight: bold !important; +} + +.ui.button { + font-weight: normal; + text-decoration: none; +} + +a { + color: #009FDA; + text-decoration: none; + -webkit-transition: color 0.3s ease; + -moz-transition: color 0.3s ease; + transition: color 0.3s ease; +} + +a:hover { + color: #00BAFF; +} + +p a { + font-weight: bold; +} + +/******************************* + Global +*******************************/ +/*rtl:ignore*/ +.menu .right.menu > .mobile.item { + display: none; +} + + +.ui.page.grid.segment { + padding-top: .5rem; + padding-bottom: .5rem; +} + +#top-header { + background-color: #517fa4; + background-image: url("../images/noise-1.png"), -moz-linear-gradient(center top , #517fa4, #306088); + background-position: 50% 50%; + box-shadow: 0 1px 0 rgba(111, 151, 182, 0.5) inset, 0 -1px 0 rgba(111, 151, 182, 0.2) inset, 0 1px 1px rgba(0, 0, 0, 0.2); + border-bottom: medium none; + height: 44px; + padding-top: 0; +} + +.masthead.segment { + background-image: url(images/bg.jpg); + background-size: cover; + margin: 0em; + padding-top: 4rem; + overflow: hidden; + -webkit-box-shadow: 0 -20px 10px 0 rgba(0, 0, 0, 0.1) inset !important; + box-shadow: 0 -20px 10px 0 rgba(0, 0, 0, 0.1) inset !important; +} + +.masthead.segment .column { + position: relative; +} + +.masthead.segment .information { + margin: 3em 1em 1em 280px; +} + +.masthead.segment .information p { + max-width: 600px; + margin: 0em 0px 2em 0em; + font-size: 1.2em; +} + +.masthead.segment h1.ui.header .sub { + font-size: 0.7em; +} + +.masthead.segment .image { + position: absolute; + left: 0%; + bottom: -110px; +} + +.overview .divided.grid .header + p { + min-height: 100px; +} + +.ui.shape .icon, +.link.list .icon { + margin: 0em; + padding: 0em; +} + +.ui.cube.shape .side { + background-color: transparent; +} + +/******************************* + Responsive +*******************************/ + +/* Mobile Only */ + +@media only screen and (max-width : 768px) { + .ui.page.grid.segment { + padding-top: 2rem; + padding-bottom: 2rem; + } + /*rtl:ignore*/ + .menu .right.menu > .item { + display: none; + } + /*rtl:ignore*/ + .menu .right.menu > .mobile.item { + display: block; + } + + h1.ui.header { + font-size: 1.5em; + } + + .masthead.segment { + background-size: auto; + } + + .masthead.segment .information { + margin-left: 190px; + } + + .masthead.segment .image { + bottom: -65px; + width: 150px; + } + + .masthead.segment .button { + font-size: 1rem; + } + + .overview .divided.grid .header .icon { + font-size: 1.5em; + } + + .overview .divided.grid .header + p { + min-height: 0px; + } + + .masthead.segment .column { + font-size: 0.7rem; + } + + .masthead.segment .column p { + display: none; + } + /*rtl:ignore*/ + .selection.list .right.floated { + display: none; + } +} + +.fright { + float: right; +} + +.fleft { + float: left; +} + +#instamkt { + margin-top: 10px; +} + +#instamkt a { + color: #FFFFFF; + font-weight: bold; +} + +#instamkt a:hover { + text-decoration: underline; +} + +#login-btn { + margin-top: 5px; +} \ No newline at end of file diff --git a/public/fonts/basic.icons.eot b/public/fonts/basic.icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..25066de069a62374b39f220581d1314fa60a5f45 GIT binary patch literal 40166 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 + + + +Created by FontForge 20100429 at Thu Sep 20 22:09:47 2012 + By root +Copyright (C) 2012 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/basic.icons.ttf b/public/fonts/basic.icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..318a2643d3af55fe51b472e7769b99caf74ff7b0 GIT binary patch literal 39924 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 J*(!_){|Uh81M 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�-A&iY%khEsGVMaq&$BJA^QAs8x>7-g_ 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 k3oQ661F8F$xZIP$lY?c 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 literal 0 HcmV?d00001 diff --git a/public/fonts/icons.svg b/public/fonts/icons.svg new file mode 100644 index 0000000..2edb4ec --- /dev/null +++ b/public/fonts/icons.svg @@ -0,0 +1,399 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/icons.ttf b/public/fonts/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d3659246915cacb0c9204271f1f9fc5f77049eac GIT binary patch literal 79076 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 literal 0 HcmV?d00001 diff --git a/public/images/loader-large-inverted.gif b/public/images/loader-large-inverted.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee5283f10fc717f8a2335f8b8092e1adae642f92 GIT binary patch literal 10168 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 CvRK0a literal 0 HcmV?d00001 diff --git a/public/images/loader-large.gif b/public/images/loader-large.gif new file mode 100644 index 0000000000000000000000000000000000000000..519621ccde30027bee14c18a2c552def9f39f9e7 GIT binary patch literal 8492 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 literal 0 HcmV?d00001 diff --git a/public/images/loader-mini-inverted.gif b/public/images/loader-mini-inverted.gif new file mode 100644 index 0000000000000000000000000000000000000000..c7c95b948d30a5a8ee87741d663b2e05c77db59b GIT binary patch literal 2722 zcmcJQe^8Ql9LFED zrgJ;b7M3NImX#|jYeJb>wz1}Z+MQ zu9PGt@`Fh5P4q*QLP0Qu=lS0AEP_tO<;zX8Rt=oC;h{ZSwCg_9?LSy}^NgPN{^Zfm zsgFN5r_N2S-ddfzBDecww^$?|yfO$doku!LHkJ&2Irwi9G+HT_xVUT3q4tAkd zzeC$X_dNe;$!kB99vm)3M^z>Us1O_i=2ENFZTs6mv8l1Cu&D5y>l_hBsF$ick9C4* z%dQr`9LnqHKjspywIs(=Lst_vCyR82QR$YOR7hP~cSP+_+3=$tyI#hdx=p6_2~G+W zj3ZzIMTP>T1kVXTmY2wbLA9@H6`2Z<0>QR}ZD4u*_Ii*-=Zy3php|8qt2Psqt9;T> zlt-}Gk!8n+2f5DA=?A|PD|M+f*Oa9G!nr%$j*^UaRm|wHVS(BlqATleMwYwfqE(JeB|a>slX|;O*bLdT z&{sk({rGhX4HxW#qj>KtuxJwuiAc zUb?;Mpu!1^FRpmJrQiq#we><073mK z#iaoVuz^c@qbtQWl!h@)GtGMpx9Ewc8(N1iqjK#t{wy z0H6r#1^}=FzyLhnOu!Dv2Ot4>6ei0p?-RXLfF{LbFRtcRt`9aWXh z1Y7_GL;wOrV49aDNT$oDC+|j&-8MGFCA&bnNq%b zyaI)_f+B%K0|jVL5P|TZOrdPXFHnv$@c9;PPU{lF$ft>FS{Mcvx}J?NNaJ18*an50 zf@XW7LE*^#C5rOgfimiJjfEdwv1_R*4=KqYVmW3GsRB z6Xx|?ZiWIH8$$HgC!~hX>+lcDB$t|(HCAXteqh#JAhgPK5 zq(zaX7dd<(H-z*JK_1_1e}BR$`1=#qbNv1k`OJPhHf=MX5>J<$i0#$u`*3E{WL~v> zM^ywDr8VOAXH{KI{CO?S*_BK>oBzBkrUPGzSD}s$-4bRMSwqHH z)Ufij5=^mkZ!c+Wy+4pKBv79sF~C3?-Vk8h0l;I3R17ds6<`!BKS06-qso6s80=J| zBKQxq|E$m~6pA@k)wO3wHelyfGo@#yQK#N|rqrozrLXNRCFm$EJ$n;^Qe)TH@lwKI zS)kA16>UBDzKDAtwf*8x>8bitt?ZZIM6sOMPIO^jjZ%RdOyGJKWr zp9*v#6lj5|n<0Jciyt|0Ga9o=ACe6N?)Rv(1XE5Kn!2&xg5&0stsg}t;zxtYi8h5j gW_w1fQu2_QnZPn3bFlfE(=lJv_)g~k=+Ak71CD7&bN~PV literal 0 HcmV?d00001 diff --git a/public/images/loader-mini.gif b/public/images/loader-mini.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f3e27c704155e5c2d5c4b7c776fd8f499f8e04f GIT binary patch literal 2548 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 literal 0 HcmV?d00001 diff --git a/public/images/loader-small.gif b/public/images/loader-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c9f60ee2944554b57e0c79b6ad70e515c2a257b GIT binary patch literal 3447 zcmchZc~nzp8i#Lg?!6=sAfaIq0TT=mAchF25nNcpBHKw26kMaC1Ox>|i&knvKo(hL zQE0|O1Pln4sf<;jPQb_*mx>zehKgvN;xeK#bz@4u0D*MIcIKR(Gx>*e63+KN@9%!^ z``n;Kf!w)ktRO4sAq16ImOpy@sO@;$&`(3MgECpQ?Abq_4gWk`US0m|$+O}2!*%ky zk&zKd_o0s%MFd1G_V?unxU)HU9QdC84j~dD62#K}kM>vynNgy4E{svID2kDSOd2AA zh>DOrxlPD7-=!trPe1x%*NYKlO-eA!y7*k28$5o3>EsDgP*wB22B37D>d-nRz$$!Th$%~E#!`GkTH zBv0jfnibuaTk_|c%s)pb5|nnZ(%tJl#qI{qvJxu3{A1hBOPkv751!Z+@ztFdZ#!1m z>RK?FY(WZ`K~5kr00~+E*dR*~DxhsU)du3!lD{7Y4UWMhOMBD%M`>vWkPZlP$ zuCHRPW;)lWdXh3ZXDP0mgm$F;(o_!WV}r|u-ZOP!m|(3!oL{cE zMW_(XQXw&rCi&cU98Fbg;k&mXZC3v5fYMv4AI!YOJ|`ZU6JydxL38u+_Z9?wjCO2f zv|xZ1%!n>rE$!ov(WV00Kr(F_1^d@E@p@%yiBG>IG6lxu7yV0RK}sxE-de#64DyX5 zEBj}*g+-?4RB#?3;jZ=3+vHqhQe%sGAVgJ7JJdJi?~$7PMt&r(ePGo|p1|eHed_VSTQh}hBdhcFP!N$Bpr(o9 zhy**PIYU7Dn}CYNDmu3-&XwZ!m>QisM8eaK*UjDVJq4mdA>7t`3C2^SDxP) zUZXa19VobW^vWl1%-N~&-6^!qXO?-g_Z|y=@a_v`B5m?u#ov z?Dx~-T$!M7U8{X(+p2a*^SY<}y& z1>cRQo!vsG&;E;$?i3qUe}?C_KDn=9?Ow2w*(`P4F{_I5K6PgwUvYQd&RIn}IHq#wvv24;5sy}e8NZHpnZM25 zF)4nyMZ8?(dbM!TN|S1I=DRC?74GbocNV&;#*P1Js zFl0Pu{Z*^A)m05xuiz?-sS4Bqn^#+^K`SyK5@3{xC=l5 z`_xWhnTZ*=Duji}e0^FGGGeH3(5+Mbh9_*L?fH1yn54AA0(u-(6#xO7Y_j2?k2UOV zbx;yzgk#EJf`>T-b;HMm5Z=<3*2!U6l_db2wa=Un0!Vz6qp!&sNd72-f!p%V9tq0l)}0^_D10}-Lth@O4|vM zIQTxgwGBkDgj1{v8ghO#e5omd#nT5hd>D3OU+)t!sm7TPs=|%!E)UX8W9Bux;&DVY z10~|b4)pPc^j>D9`mWNx5RB>y^f4wXpeWGCM6v)Bi7WZHhs(62<)tHgAyz+3zzK6P zG70f}T1JB~QkF>_FIb$Fc^IP695hTP*ZM~UR+!&FJ3>XW*OYQ?%#5V++uxGT1)|pc zfEBawIM^35|Fw3C{bbaf+BrwMCuu*>}n`sh%616hxx)5PVNT|3ZnGPX4AP>$Syzs3zzu$mioZ%ID znd4oT(z29!+=hUIo`yZ~YEuW=NdO&w4^WxBjH0fhBE^(P+rm3^kA% zED&UvqnzjhggtdZtYBraxsLjO^3$iHQ@uZLP~L(|qp~can~NVvLf;7Tx4E3jt+aE5 zx-O*gsCPn*NZfnR{UK@=$B!aSGT$Bi{cE%9xXS4GmsV%DCEhJAPIzq_FTBT!cc@KS zAypewT7;hN>p1QA55g#3ibpe$G!hzOx3thMiix_E5uZ~&=93`TV${;A>W&Z)H zhY4%R{#aSM%vwJC?t8&4v^bP@gJi<2-SinQw!C*x`N5WQ_WY|JmTfA0yDWa?s`N

xA+D)|B@z|0K+C literal 0 HcmV?d00001 diff --git a/public/images/noise-1.png b/public/images/noise-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a36077607774a8ba7c4f91d38d2c74e9b06721a3 GIT binary patch literal 3116 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 Jt)gZ4e*yNOs$&2E literal 0 HcmV?d00001 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..429852e --- /dev/null +++ b/public/index.php @@ -0,0 +1,11 @@ +run(); \ No newline at end of file diff --git a/public/javascript/scripts.js b/public/javascript/scripts.js new file mode 100644 index 0000000..39dd9e0 --- /dev/null +++ b/public/javascript/scripts.js @@ -0,0 +1,190 @@ +(function(window, $, undefined) { + + "use strict"; + + var photoPage = 0; + var loadingPhoto = false; + function loadNextPhotoPage() + { + if (loadingPhoto || $('.pagination-end').length) { + return; + } + + $('#photo-loader').show(); + + var box = $('#list-photos'); + loadingPhoto = true; + + $.ajax({ + url: '/fotos/' + box.attr('data-username') + '?page=' + (photoPage + 1), + success: function(response) { + box.append(response); + }, + complete: function() { + loadingPhoto = false; + $('#photo-loader').hide(); + } + }); + + photoPage++; + } + + $(function() { + + $('#register-form').form({ + username: { + identifier : 'form-username', + rules: [ + { + type : 'empty', + prompt : 'Informe seu usuário' + } + ] + }, + email: { + identifier : 'form-email', + rules: [ + { + type : 'empty', + prompt : 'Informe seu e-mail' + }, + { + type: 'email', + prompt: 'Informe um e-mail válido' + } + ] + }, + password: { + identifier : 'form-password', + rules: [ + { + type : 'empty', + prompt : 'Informe sua senha' + }, + { + type : 'length[6]', + prompt : 'Sua senha precisa ter no mínimo 6 caracteres' + } + ] + } + }, { + inline : true, + on : 'blur' + }); + + $('#login-form').form({ + username: { + identifier : 'login-username', + rules: [ + { + type : 'empty', + prompt : 'Informe seu usuário' + } + ] + }, + password: { + identifier : 'login-password', + rules: [ + { + type : 'empty', + prompt : 'Informe sua senha' + }, + { + type : 'length[6]', + prompt : 'Sua senha precisa ter no mínimo 6 caracteres' + } + ] + } + }, { + inline : true, + on : 'blur' + }); + + $('#send-photo-form').form({ + photo: { + identifier : 'form-photo', + rules: [ + { + type : 'empty', + prompt : 'Selecione uma imagem' + } + ] + }, + descriptin: { + identifier : 'form-description', + rules: [ + { + type : 'maxLength[140]', + prompt : 'Máximo de 140 caracteres' + } + ] + } + }, { + inline : true, + on : 'blur' + }); + + $(document).on('click', '.open-photo', function() { + + $(this).closest('.photo-item').children('.list-photo.modal').clone() + .modal('setting', 'closable', true) + .modal('show'); + + }); + + var followAjax = false; + $('.follow').click(function() { + + if (followAjax) { + return false; + } + + followAjax = true; + + $.getJSON('/seguir/' + $(this).attr('data-username'), function(response) { + window.location = window.location; + }); + + }); + + var likeAjax = false; + $(document).on('click', '.like-photo', function() { + + if (likeAjax) { + return false; + } + + likeAjax = true; + var obj = $(this); + var photoId = obj.attr('data-photo'); + + $.getJSON('/curtir/' + photoId, function(response) { + + if (response.likes != undefined) { + $('.like-count', '.photo-' + photoId).text(response.likes + ' like\'s'); + } + + if (response.liked) { + obj.addClass('active'); + } else { + obj.removeClass('active'); + } + + likeAjax = false; + }); + + }); + + if ($('#list-photos').length) { + $(window).scroll(function () { + if ($(window).scrollTop() + $(window).height() == $(document).height()) { + loadNextPhotoPage(); + } + }); + + loadNextPhotoPage(); + } + + }); + +})(window, jQuery); \ No newline at end of file diff --git a/public/javascript/semantic.min.js b/public/javascript/semantic.min.js new file mode 100644 index 0000000..60fe50a --- /dev/null +++ b/public/javascript/semantic.min.js @@ -0,0 +1,16 @@ +/** # Semantic UI +* Version: 0.19.3 +* http://github.com/jlukic/semantic-ui +* +* +* Copyright 2014 Contributors +* Released under the MIT license +* http://opensource.org/licenses/MIT +* +* Release Date: 09/20/2014 +*/ +!function(a,b,c,d){a.fn.accordion=function(b){var c,e=a(this),f=(new Date).getTime(),g=[],h=arguments[0],i="string"==typeof h,j=[].slice.call(arguments,1);return e.each(function(){var k,l=a.isPlainObject(b)?a.extend(!0,{},a.fn.accordion.settings,b):a.extend({},a.fn.accordion.settings),m=l.className,n=l.namespace,o=l.selector,p=(l.error,"."+n),q="module-"+n,r=e.selector||"",s=a(this),t=s.find(o.title),u=s.find(o.content),v=this,w=s.data(q);k={initialize:function(){k.debug("Initializing accordion with bound events",s),t.on("click"+p,k.event.click),k.instantiate()},instantiate:function(){w=k,s.data(q,k)},destroy:function(){k.debug("Destroying previous accordion for",s),s.removeData(q),t.off(p)},event:{click:function(){k.verbose("Title clicked",this);var b=a(this),c=t.index(b);k.toggle(c)},resetDisplay:function(){a(this).css("display",""),""==a(this).attr("style")&&a(this).attr("style","").removeAttr("style")},resetOpacity:function(){a(this).css("opacity",""),""==a(this).attr("style")&&a(this).attr("style","").removeAttr("style")}},toggle:function(a){k.debug("Toggling content content at index",a);var b=t.eq(a),c=b.next(u),d=c.is(":visible");d?l.collapsible?k.close(a):k.debug("Cannot close accordion content collapsing is disabled"):k.open(a)},open:function(b){var c=t.eq(b),d=c.next(u),e=k.is.menu()?c.parent().siblings(o.item).find(o.title):c.siblings(o.title),f=e.filter("."+m.active),g=f.next(t),h=f.size()>0;d.is(":animated")||(k.debug("Opening accordion content",c),l.exclusive&&h&&(f.removeClass(m.active),g.stop().children().stop().animate({opacity:0},l.duration,k.event.resetOpacity).end().slideUp(l.duration,l.easing,function(){g.removeClass(m.active).children(),a.proxy(k.event.resetDisplay,this)()})),c.addClass(m.active),d.stop().children().stop().animate({opacity:1},l.duration).end().slideDown(l.duration,l.easing,function(){d.addClass(m.active),a.proxy(k.event.resetDisplay,this)(),a.proxy(l.onOpen,d)(),a.proxy(l.onChange,d)()}))},close:function(b){var c=t.eq(b),d=c.next(u);k.debug("Closing accordion content",d),c.removeClass(m.active),d.removeClass(m.active).show().stop().children().stop().animate({opacity:0},l.duration,k.event.resetOpacity).end().slideUp(l.duration,l.easing,function(){a.proxy(k.event.resetDisplay,this)(),a.proxy(l.onClose,d)(),a.proxy(l.onChange,d)()})},is:{menu:function(){return s.hasClass(m.menu)}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,l,b);else{if(c===d)return l[b];l[b]=c}},internal:function(b,c){return k.debug("Changing internal",b,c),c===d?k[b]:void(a.isPlainObject(b)?a.extend(!0,k,b):k[b]=c)},debug:function(){l.debug&&(l.performance?k.performance.log(arguments):(k.debug=Function.prototype.bind.call(console.info,console,l.name+":"),k.debug.apply(console,arguments)))},verbose:function(){l.verbose&&l.debug&&(l.performance?k.performance.log(arguments):(k.verbose=Function.prototype.bind.call(console.info,console,l.name+":"),k.verbose.apply(console,arguments)))},error:function(){k.error=Function.prototype.bind.call(console.error,console,l.name+":"),k.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;l.performance&&(b=(new Date).getTime(),d=f||b,c=b-d,f=b,g.push({Element:v,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(k.performance.timer),k.performance.timer=setTimeout(k.performance.display,100)},display:function(){var b=l.name+":",c=0;f=!1,clearTimeout(k.performance.timer),a.each(g,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",r&&(b+=" '"+r+"'"),(console.group!==d||console.table!==d)&&g.length>0&&(console.groupCollapsed(b),console.table?console.table(g):a.each(g,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),g=[]}},invoke:function(b,e,f){var g,h,i,k=w;return e=e||j,f=v||f,"string"==typeof b&&k!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(k[f])&&c!=g)k=k[f];else{if(k[f]!==d)return h=k[f],!1;if(!a.isPlainObject(k[e])||c==g)return k[e]!==d?(h=k[e],!1):!1;k=k[e]}})),a.isFunction(h)?i=h.apply(f,e):h!==d&&(i=h),a.isArray(c)?c.push(i):c!==d?c=[c,i]:i!==d&&(c=i),h}},i?(w===d&&k.initialize(),k.invoke(h)):(w!==d&&k.destroy(),k.initialize())}),c!==d?c:this},a.fn.accordion.settings={name:"Accordion",namespace:"accordion",debug:!1,verbose:!0,performance:!0,exclusive:!0,collapsible:!0,duration:500,easing:"easeInOutQuint",onOpen:function(){},onClose:function(){},onChange:function(){},error:{method:"The method you called is not defined"},className:{active:"active",menu:"menu"},selector:{title:".title",content:".content",menu:".menu",item:".item"}},a.extend(a.easing,{easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c}})}(jQuery,window,document),function(a,b,c,d){a.api=a.fn.api=function(c){var e,f,g=a.extend(!0,{},a.api.settings,c),h="function"!=typeof this?this:a("

"),i=a(g.stateContext?g.stateContext:h),j="object"==typeof this?a(h):i,k=this,l=(new Date).getTime(),m=[],n=j.selector||"",o=g.namespace+"-module",p=g.className,q=g.metadata,r=g.error,s=j.data(o),t=arguments[0],u=s!==d&&"string"==typeof t,v=[].slice.call(arguments,1);return e={initialize:function(){var c,f,h,k,l,m,n=(new Date).getTime(),o={},s={};return g.serializeForm&&a(this).toJSON()!==d&&(o=e.get.formData(),e.debug("Adding form data to API Request",o),a.extend(!0,g.data,o)),c=a.proxy(g.beforeSend,j)(g),c===d||c?(k=e.get.url(e.get.templateURL()))?(h=a.Deferred().always(function(){g.stateContext&&i.removeClass(p.loading),a.proxy(g.complete,j)()}).done(function(b){e.debug("API request successful"),"json"==g.dataType?b.error!==d?a.proxy(g.failure,i)(b.error,g,j):a.isArray(b.errors)?a.proxy(g.failure,i)(b.errors[0],g,j):a.proxy(g.success,i)(b,g,j):a.proxy(g.success,i)(b,g,j)}).fail(function(b,c,f){var h,j=g.error[c]!==d?g.error[c]:f;if(b!==d)if(b.readyState!==d&&4==b.readyState){if(200!=b.status&&f!==d&&""!==f)e.error(k.statusMessage+f);else if("error"==c&&"json"==g.dataType)try{h=a.parseJSON(b.responseText),h&&h.error!==d&&(j=h.error)}catch(k){e.error(k.JSONParse)}i.removeClass(p.loading).addClass(p.error),g.errorLength>0&&setTimeout(function(){i.removeClass(p.error)},g.errorLength),e.debug("API Request error:",j),a.proxy(g.failure,i)(j,g,this)}else e.debug("Request Aborted (Most likely caused by page change)")}),a.extend(!0,s,g,{success:function(){},failure:function(){},complete:function(){},type:g.method||g.type,data:l,url:k,beforeSend:g.beforeXHR}),g.stateContext&&i.addClass(p.loading),g.progress&&(e.verbose("Adding progress events"),a.extend(!0,s,{xhr:function(){var c=new b.XMLHttpRequest;return c.upload.addEventListener("progress",function(b){var c;b.lengthComputable&&(c=Math.round(b.loaded/b.total*1e4)/100+"%",a.proxy(g.progress,i)(c,b))},!1),c.addEventListener("progress",function(b){var c;b.lengthComputable&&(c=Math.round(b.loaded/b.total*1e4)/100+"%",a.proxy(g.progress,i)(c,b))},!1),c}})),e.verbose("Creating AJAX request with settings: ",s),m=a.ajax(s).always(function(){f=g.loadingLength-((new Date).getTime()-n),g.loadingDelay=0>f?0:f}).done(function(a){var b=this;setTimeout(function(){h.resolveWith(b,[a])},g.loadingDelay)}).fail(function(a,b,c){var d=this;"abort"!=b?setTimeout(function(){h.rejectWith(d,[a,b,c])},g.loadingDelay):i.removeClass(p.error).removeClass(p.loading)}),void(g.stateContext&&j.data(q.promise,h).data(q.xhr,m))):(e.error(r.missingURL),void e.reset()):(e.error(r.beforeSend),void e.reset())},get:{formData:function(){return j.closest("form").toJSON()},templateURL:function(){var a,b=j.data(g.metadata.action)||g.action||!1;return b&&(e.debug("Creating url for: ",b),g.api[b]!==d?a=g.api[b]:e.error(r.missingAction)),g.url&&(a=g.url,e.debug("Getting url",a)),a},url:function(b,c){var f;return b&&(f=b.match(g.regExpTemplate),c=c||g.urlData,f&&(e.debug("Looking for URL variables",f),a.each(f,function(g,h){var i=h.substr(2,h.length-3),k=a.isPlainObject(c)&&c[i]!==d?c[i]:j.data(i)!==d?j.data(i):c[i];if(e.verbose("Looking for variable",i,j,j.data(i),c[i]),k===!1)e.debug("Removing variable from URL",f),b=b.replace("/"+h,"");else{if(k===d||!k)return e.error(r.missingParameter+i),b=!1,!1;b=b.replace(h,k)}}))),b}},reset:function(){j.data(q.promise,!1).data(q.xhr,!1),i.removeClass(p.error).removeClass(p.loading)},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,g,b);else{if(c===d)return g[b];g[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,e,b);else{if(c===d)return e[b];e[b]=c}},debug:function(){g.debug&&(g.performance?e.performance.log(arguments):(e.debug=Function.prototype.bind.call(console.info,console,g.name+":"),e.debug.apply(console,arguments)))},verbose:function(){g.verbose&&g.debug&&(g.performance?e.performance.log(arguments):(e.verbose=Function.prototype.bind.call(console.info,console,g.name+":"),e.verbose.apply(console,arguments)))},error:function(){e.error=Function.prototype.bind.call(console.error,console,g.name+":"),e.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;g.performance&&(b=(new Date).getTime(),d=l||b,c=b-d,l=b,m.push({Element:k,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(e.performance.timer),e.performance.timer=setTimeout(e.performance.display,100)},display:function(){var b=g.name+":",c=0;l=!1,clearTimeout(e.performance.timer),a.each(m,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",n&&(b+=" '"+n+"'"),(console.group!==d||console.table!==d)&&m.length>0&&(console.groupCollapsed(b),console.table?console.table(m):a.each(m,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),m=[]}},invoke:function(b,c,e){var g,h,i,j=s;return c=c||v,e=k||e,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(e,c):h!==d&&(i=h),a.isArray(f)?f.push(i):f!==d?f=[f,i]:i!==d&&(f=i),h}},u?(s===d&&e.initialize(),e.invoke(t)):(s!==d&&e.destroy(),e.initialize()),f!==d?f:this},a.fn.apiButton=function(b){return a(this).each(function(){var c,d=a(this),e=a(this).selector||"",f=a.isFunction(b)?a.extend(!0,{},a.api.settings,a.fn.apiButton.settings,{stateContext:this,success:b}):a.extend(!0,{},a.api.settings,a.fn.apiButton.settings,{stateContext:this},b);c={initialize:function(){f.context&&""!==e?a(f.context).on(e,"click."+f.namespace,c.click):d.on("click."+f.namespace,c.click)},click:function(){f.filter&&0!==a(this).filter(f.filter).size()||a.proxy(a.api,this)(f)}},c.initialize()}),this},a.api.settings={name:"API",namespace:"api",debug:!0,verbose:!0,performance:!0,api:{},beforeSend:function(a){return a},beforeXHR:function(){},success:function(){},complete:function(){},failure:function(){},progress:!1,error:{missingAction:"API action used but no url was defined",missingURL:"URL not specified for the API action",missingParameter:"Missing an essential URL parameter: ",timeout:"Your request timed out",error:"There was an error with your request",parseError:"There was an error parsing your request",JSONParse:"JSON could not be parsed during error handling",statusMessage:"Server gave an error: ",beforeSend:"The before send function has aborted the request",exitConditions:"API Request Aborted. Exit conditions met"},className:{loading:"loading",error:"error"},metadata:{action:"action",promise:"promise",xhr:"xhr"},regExpTemplate:/\{\$([A-z]+)\}/g,action:!1,url:!1,urlData:!1,serializeForm:!1,stateContext:!1,method:"get",data:{},dataType:"json",cache:!0,loadingLength:200,errorLength:2e3},a.fn.apiButton.settings={filter:".disabled, .loading",context:!1,stateContext:!1}}(jQuery,window,document),function(a,b,c,d){a.fn.colorize=function(b){var c=a.extend(!0,{},a.fn.colorize.settings,b),e=arguments||!1;return a(this).each(function(b){var f,g,h,i,j,k,l,m,n=a(this),o=a("")[0],p=a("")[0],q=a("")[0],r=new Image,s=c.colors,t=(c.paths,c.namespace),u=c.error,v=n.data("module-"+t);return m={checkPreconditions:function(){return m.debug("Checking pre-conditions"),!a.isPlainObject(s)||a.isEmptyObject(s)?(m.error(u.undefinedColors),!1):!0},async:function(a){c.async?setTimeout(a,0):a()},getMetadata:function(){m.debug("Grabbing metadata"),i=n.data("image")||c.image||d,j=n.data("name")||c.name||b,k=c.width||n.width(),l=c.height||n.height(),(0===k||0===l)&&m.error(u.undefinedSize)},initialize:function(){m.debug("Initializing with colors",s),m.checkPreconditions()&&m.async(function(){m.getMetadata(),m.canvas.create(),m.draw.image(function(){m.draw.colors(),m.canvas.merge()}),n.data("module-"+t,m)})},redraw:function(){m.debug("Redrawing image"),m.async(function(){m.canvas.clear(),m.draw.colors(),m.canvas.merge()})},change:{color:function(a,b){return m.debug("Changing color",a),s[a]===d?(m.error(u.missingColor),!1):(s[a]=b,void m.redraw())}},canvas:{create:function(){m.debug("Creating canvases"),o.width=k,o.height=l,p.width=k,p.height=l,q.width=k,q.height=l,f=o.getContext("2d"),g=p.getContext("2d"),h=q.getContext("2d"),n.append(o),f=n.children("canvas")[0].getContext("2d")},clear:function(){m.debug("Clearing canvas"),h.fillStyle="#FFFFFF",h.fillRect(0,0,k,l)},merge:function(){return a.isFunction(f.blendOnto)?(f.putImageData(g.getImageData(0,0,k,l),0,0),void h.blendOnto(f,"multiply")):void m.error(u.missingPlugin)}},draw:{image:function(a){m.debug("Drawing image"),a=a||function(){},i?(r.src=i,r.onload=function(){g.drawImage(r,0,0),a()}):(m.error(u.noImage),a())},colors:function(){m.debug("Drawing color overlays",s),a.each(s,function(a,b){c.onDraw(h,j,a,b)})}},debug:function(a,b){c.debug&&(b!==d?console.info(c.name+": "+a,b):console.info(c.name+": "+a))},error:function(a){console.warn(c.name+": "+a)},invoke:function(b,e,f){var g;return f=f||Array.prototype.slice.call(arguments,2),"string"==typeof b&&v!==d&&(b=b.split("."),a.each(b,function(b,d){return a.isPlainObject(v[d])?(v=v[d],!0):a.isFunction(v[d])?(g=v[d],!0):(m.error(c.error.method),!1)})),a.isFunction(g)?g.apply(e,f):!1}},v!==d&&e?("invoke"==e[0]&&(e=Array.prototype.slice.call(e,1)),m.invoke(e[0],this,Array.prototype.slice.call(e,1))):void m.initialize()}),this},a.fn.colorize.settings={name:"Image Colorizer",debug:!0,namespace:"colorize",onDraw:function(){},async:!0,colors:{},metadata:{image:"image",name:"name"},error:{noImage:"No tracing image specified",undefinedColors:"No default colors specified.",missingColor:"Attempted to change color that does not exist",missingPlugin:"Blend onto plug-in must be included",undefinedHeight:"The width or height of image canvas could not be automatically determined. Please specify a height."}}}(jQuery,window,document),function(a,b,c,d){a.fn.form=function(b,e){var f,g=a(this),h=a.extend(!0,{},a.fn.form.settings,e),i=a.extend({},a.fn.form.settings.defaults,b),j=h.namespace,k=h.metadata,l=h.selector,m=h.className,n=(h.error,"."+j),o="module-"+j,p=g.selector||"",q=(new Date).getTime(),r=[],s=arguments[0],t="string"==typeof s,u=[].slice.call(arguments,1);return g.each(function(){var b,e=a(this),j=a(this).find(l.field),v=a(this).find(l.group),w=a(this).find(l.message),x=(a(this).find(l.prompt),a(this).find(l.submit)),y=[],z=this,A=e.data(o);b={initialize:function(){b.verbose("Initializing form validation",e,i,h),b.bindEvents(),b.instantiate()},instantiate:function(){b.verbose("Storing instance of module",b),A=b,e.data(o,b)},destroy:function(){b.verbose("Destroying previous module",A),b.removeEvents(),e.removeData(o)},refresh:function(){b.verbose("Refreshing selector cache"),j=e.find(l.field)},submit:function(){b.verbose("Submitting form",e),e.submit()},bindEvents:function(){h.keyboardShortcuts&&j.on("keydown"+n,b.event.field.keydown),e.on("submit"+n,b.validate.form),j.on("blur"+n,b.event.field.blur),x.on("click"+n,b.submit),j.each(function(){var c=a(this).prop("type"),d=b.get.changeEvent(c);a(this).on(d+n,b.event.field.change)})},removeEvents:function(){e.off(n),j.off(n),x.off(n),j.off(n)},event:{field:{keydown:function(c){var d=a(this),e=c.which,f={enter:13,escape:27};return e==f.escape&&(b.verbose("Escape key pressed blurring field"),d.blur()),!c.ctrlKey&&e==f.enter&&d.is(l.input)?(b.debug("Enter key pressed, submitting form"),x.addClass(m.down),d.one("keyup"+n,b.event.field.keyup),c.preventDefault(),!1):void 0},keyup:function(){b.verbose("Doing keyboard shortcut form submit"),x.removeClass(m.down),b.submit()},blur:function(){var c=a(this),d=c.closest(v);d.hasClass(m.error)?(b.debug("Revalidating field",c,b.get.validation(c)),b.validate.field(b.get.validation(c))):("blur"==h.on||"change"==h.on)&&b.validate.field(b.get.validation(c))},change:function(){var c=a(this),d=c.closest(v);("change"==h.on||d.hasClass(m.error)&&h.revalidate)&&(clearTimeout(b.timer),b.timer=setTimeout(function(){b.debug("Revalidating field",c,b.get.validation(c)),b.validate.field(b.get.validation(c))},h.delay))}}},get:{changeEvent:function(a){return"checkbox"==a||"radio"==a||"hidden"==a?"change":c.createElement("input").oninput!==d?"input":c.createElement("input").onpropertychange!==d?"propertychange":"keyup"},field:function(c){return b.verbose("Finding field with identifier",c),j.filter("#"+c).size()>0?j.filter("#"+c):j.filter('[name="'+c+'"]').size()>0?j.filter('[name="'+c+'"]'):j.filter("[data-"+k.validate+'="'+c+'"]').size()>0?j.filter("[data-"+k.validate+'="'+c+'"]'):a("")},validation:function(c){var d;return a.each(i,function(a,e){b.get.field(e.identifier).get(0)==c.get(0)&&(d=e)}),d||!1}},has:{field:function(a){return b.verbose("Checking for existence of a field with identifier",a),j.filter("#"+a).size()>0?!0:j.filter('[name="'+a+'"]').size()>0?!0:j.filter("[data-"+k.validate+'="'+a+'"]').size()>0?!0:!1}},add:{prompt:function(c,f){var g=b.get.field(c),i=g.closest(v),j=i.find(l.prompt),k=0!==j.size();f="string"==typeof f?[f]:f,b.verbose("Adding field error state",c),i.addClass(m.error),h.inline&&(k||(j=h.templates.prompt(f),j.appendTo(i)),j.html(f[0]),k?b.verbose("Inline errors are disabled, no inline error added",c):h.transition&&a.fn.transition!==d&&e.transition("is supported")?(b.verbose("Displaying error with css transition",h.transition),j.transition(h.transition+" in",h.duration)):(b.verbose("Displaying error with fallback javascript animation"),j.fadeIn(h.duration)))},errors:function(a){b.debug("Adding form error messages",a),w.html(h.templates.error(a))}},remove:{prompt:function(c){var f=b.get.field(c.identifier),g=f.closest(v),i=g.find(l.prompt);g.removeClass(m.error),h.inline&&i.is(":visible")&&(b.verbose("Removing prompt for field",c),h.transition&&a.fn.transition!==d&&e.transition("is supported")?i.transition(h.transition+" out",h.duration,function(){i.remove()}):i.fadeOut(h.duration,function(){i.remove()}))}},validate:{form:function(c){var d=!0;return y=[],a.each(i,function(a,c){b.validate.field(c)||(d=!1)}),d?(b.debug("Form has no validation errors, submitting"),e.removeClass(m.error).addClass(m.success),a.proxy(h.onSuccess,this)(c)):(b.debug("Form has errors"),e.addClass(m.error),h.inline||b.add.errors(y),a.proxy(h.onFailure,this)(y))},field:function(c){var e=b.get.field(c.identifier),f=!0,g=[];return c.rules!==d&&a.each(c.rules,function(a,d){b.has.field(c.identifier)&&!b.validate.rule(c,d)&&(b.debug("Field is invalid",c.identifier,d.type),g.push(d.prompt),f=!1)}),f?(b.remove.prompt(c,g),a.proxy(h.onValid,e)(),!0):(y=y.concat(g),b.add.prompt(c.identifier,g),a.proxy(h.onInvalid,e)(g),!1)},rule:function(c,f){var g,i,j=b.get.field(c.identifier),k=f.type,l=a.trim(j.val()+""),m=/\[(.*)\]/i,n=m.exec(k),o=!0;return n!==d&&null!==n?(g=""+n[1],i=k.replace(n[0],""),o=a.proxy(h.rules[i],e)(l,g)):o=a.proxy(h.rules[k],j)(l),o}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,h,b);else{if(c===d)return h[b];h[b]=c}},internal:function(c,e){if(a.isPlainObject(c))a.extend(!0,b,c);else{if(e===d)return b[c];b[c]=e}},debug:function(){h.debug&&(h.performance?b.performance.log(arguments):(b.debug=Function.prototype.bind.call(console.info,console,h.name+":"),b.debug.apply(console,arguments)))},verbose:function(){h.verbose&&h.debug&&(h.performance?b.performance.log(arguments):(b.verbose=Function.prototype.bind.call(console.info,console,h.name+":"),b.verbose.apply(console,arguments)))},error:function(){b.error=Function.prototype.bind.call(console.error,console,h.name+":"),b.error.apply(console,arguments)},performance:{log:function(a){var c,d,e;h.performance&&(c=(new Date).getTime(),e=q||c,d=c-e,q=c,r.push({Element:z,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":d})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,100)},display:function(){var c=h.name+":",e=0;q=!1,clearTimeout(b.performance.timer),a.each(r,function(a,b){e+=b["Execution Time"]}),c+=" "+e+"ms",p&&(c+=" '"+p+"'"),g.size()>1&&(c+=" ("+g.size()+")"),(console.group!==d||console.table!==d)&&r.length>0&&(console.groupCollapsed(c),console.table?console.table(r):a.each(r,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),r=[]}},invoke:function(b,c,e){var g,h,i,j=A;return c=c||u,e=z||e,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(e,c):h!==d&&(i=h),a.isArray(f)?f.push(i):f!==d?f=[f,i]:i!==d&&(f=i),h}},t?(A===d&&b.initialize(),b.invoke(s)):(A!==d&&b.destroy(),b.initialize())}),f!==d?f:this},a.fn.form.settings={name:"Form",namespace:"form",debug:!0,verbose:!0,performance:!0,keyboardShortcuts:!0,on:"submit",inline:!1,delay:200,revalidate:!0,transition:"scale",duration:150,onValid:function(){},onInvalid:function(){},onSuccess:function(){return!0},onFailure:function(){return!1},metadata:{validate:"validate"},selector:{message:".error.message",field:"input, textarea, select",group:".field",input:"input",prompt:".prompt",submit:'.submit:not([type="submit"])'},className:{error:"error",success:"success",down:"down",label:"ui label prompt"},error:{method:"The method you called is not defined."},templates:{error:function(b){var c='
    ';return a.each(b,function(a,b){c+="
  • "+b+"
  • "}),c+="
",a(c)},prompt:function(b){return a("
").addClass("ui red pointing prompt label").html(b[0])}},rules:{checked:function(){return a(this).filter(":checked").size()>0},empty:function(a){return!(a===d||""===a)},email:function(a){var b=new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?","i");return b.test(a)},length:function(a,b){return a!==d?a.length>=b:!1},not:function(a,b){return a!=b},contains:function(a,b){return b=b.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),-1!==a.search(b)},is:function(a,b){return a==b},maxLength:function(a,b){return a!==d?a.length<=b:!1},match:function(b,c){var e,f=a(this);return f.find("#"+c).size()>0?e=f.find("#"+c).val():f.find("[name="+c+"]").size()>0?e=f.find("[name="+c+"]").val():f.find('[data-validate="'+c+'"]').size()>0&&(e=f.find('[data-validate="'+c+'"]').val()),e!==d?b.toString()==e.toString():!1},url:function(a){var b=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return b.test(a)}}}}(jQuery,window,document),function(a,b,c,d){a.fn.state=function(b){var c,e=a(this),f=a.extend(!0,{},a.fn.state.settings,b),g=e.selector||"",h=(new Date).getTime(),i=[],j=arguments[0],k="string"==typeof j,l=[].slice.call(arguments,1),m=(f.error,f.metadata),n=f.className,o=f.namespace,p=f.states,q=f.text,r="."+o,s=o+"-module";return e.each(function(){var o,t=a(this),u=this,v=t.data(s);o={initialize:function(){o.verbose("Initializing module"),f.automatic&&o.add.defaults(),f.context&&""!==g?(o.allows("hover")&&a(u,f.context).on(g,"mouseenter"+r,o.enable.hover).on(g,"mouseleave"+r,o.disable.hover),o.allows("down")&&a(u,f.context).on(g,"mousedown"+r,o.enable.down).on(g,"mouseup"+r,o.disable.down),o.allows("focus")&&a(u,f.context).on(g,"focus"+r,o.enable.focus).on(g,"blur"+r,o.disable.focus),a(f.context).on(g,"mouseenter"+r,o.change.text).on(g,"mouseleave"+r,o.reset.text).on(g,"click"+r,o.toggle.state)):(o.allows("hover")&&t.on("mouseenter"+r,o.enable.hover).on("mouseleave"+r,o.disable.hover),o.allows("down")&&t.on("mousedown"+r,o.enable.down).on("mouseup"+r,o.disable.down),o.allows("focus")&&t.on("focus"+r,o.enable.focus).on("blur"+r,o.disable.focus),t.on("mouseenter"+r,o.change.text).on("mouseleave"+r,o.reset.text).on("click"+r,o.toggle.state)),o.instantiate()},instantiate:function(){o.verbose("Storing instance of module",o),v=o,t.data(s,o)},destroy:function(){o.verbose("Destroying previous module",v),t.off(r).removeData(s)},refresh:function(){o.verbose("Refreshing selector cache"),t=a(u)},add:{defaults:function(){var c=b&&a.isPlainObject(b.states)?b.states:{};a.each(f.defaults,function(b,e){o.is[b]!==d&&o.is[b]()&&(o.verbose("Adding default states",b,u),a.extend(f.states,e,c))})}},is:{active:function(){return t.hasClass(n.active)},loading:function(){return t.hasClass(n.loading)},inactive:function(){return!t.hasClass(n.active)},enabled:function(){return!t.is(f.filter.active)},disabled:function(){return t.is(f.filter.active)},textEnabled:function(){return!t.is(f.filter.text)},button:function(){return t.is(".button:not(a, .submit)")},input:function(){return t.is("input")}},allow:function(a){o.debug("Now allowing state",a),p[a]=!0},disallow:function(a){o.debug("No longer allowing",a),p[a]=!1},allows:function(a){return p[a]||!1},enable:{state:function(a){o.allows(a)&&t.addClass(n[a])},focus:function(){t.addClass(n.focus)},hover:function(){t.addClass(n.hover)},down:function(){t.addClass(n.down)}},disable:{state:function(a){o.allows(a)&&t.removeClass(n[a])},focus:function(){t.removeClass(n.focus)},hover:function(){t.removeClass(n.hover)},down:function(){t.removeClass(n.down)}},toggle:{state:function(){var a=t.data(m.promise);o.allows("active")&&o.is.enabled()&&(o.refresh(),a!==d?o.listenTo(a):o.change.state())}},listenTo:function(b){o.debug("API request detected, waiting for state signal",b),b?(q.loading&&o.update.text(q.loading),a.when(b).then(function(){"resolved"==b.state()?(o.debug("API request succeeded"),f.activateTest=function(){return!0},f.deactivateTest=function(){return!0}):(o.debug("API request failed"),f.activateTest=function(){return!1},f.deactivateTest=function(){return!1}),o.change.state()})):(f.activateTest=function(){return!1},f.deactivateTest=function(){return!1})},change:{state:function(){o.debug("Determining state change direction"),o.is.inactive()?o.activate():o.deactivate(),f.sync&&o.sync(),a.proxy(f.onChange,u)()},text:function(){o.is.textEnabled()&&(o.is.active()?q.hover?(o.verbose("Changing text to hover text",q.hover),o.update.text(q.hover)):q.disable&&(o.verbose("Changing text to disable text",q.disable),o.update.text(q.disable)):q.hover?(o.verbose("Changing text to hover text",q.disable),o.update.text(q.hover)):q.enable&&(o.verbose("Changing text to enable text",q.enable),o.update.text(q.enable)))}},activate:function(){a.proxy(f.activateTest,u)()&&(o.debug("Setting state to active"),t.addClass(n.active),o.update.text(q.active)),a.proxy(f.onActivate,u)()},deactivate:function(){a.proxy(f.deactivateTest,u)()&&(o.debug("Setting state to inactive"),t.removeClass(n.active),o.update.text(q.inactive)),a.proxy(f.onDeactivate,u)()},sync:function(){o.verbose("Syncing other buttons to current state"),e.not(t).state(o.is.active()?"activate":"deactivate")},get:{text:function(){return f.selector.text?t.find(f.selector.text).text():t.html()},textFor:function(a){return q[a]||!1}},flash:{text:function(a,b){var c=o.get.text();o.debug("Flashing text message",a,b),a=a||f.text.flash,b=b||f.flashDuration,o.update.text(a),setTimeout(function(){o.update.text(c)},b)}},reset:{text:function(){var a=q.active||t.data(m.storedText),b=q.inactive||t.data(m.storedText);o.is.textEnabled()&&(o.is.active()&&a?(o.verbose("Resetting active text",a),o.update.text(a)):b&&(o.verbose("Resetting inactive text",a),o.update.text(b)))}},update:{text:function(a){var b=o.get.text();a&&a!==b?(o.debug("Updating text",a),f.selector.text?t.data(m.storedText,a).find(f.selector.text).text(a):t.data(m.storedText,a).html(a)):o.debug("Text is already sane, ignoring update",a)}},setting:function(b,c){return o.debug("Changing setting",b,c),c===d?f[b]:void(a.isPlainObject(b)?a.extend(!0,f,b):f[b]=c)},internal:function(b,c){return o.debug("Changing internal",b,c),c===d?o[b]:void(a.isPlainObject(b)?a.extend(!0,o,b):o[b]=c)},debug:function(){f.debug&&(f.performance?o.performance.log(arguments):(o.debug=Function.prototype.bind.call(console.info,console,f.name+":"),o.debug.apply(console,arguments)))},verbose:function(){f.verbose&&f.debug&&(f.performance?o.performance.log(arguments):(o.verbose=Function.prototype.bind.call(console.info,console,f.name+":"),o.verbose.apply(console,arguments)))},error:function(){o.error=Function.prototype.bind.call(console.error,console,f.name+":"),o.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;f.performance&&(b=(new Date).getTime(),d=h||b,c=b-d,h=b,i.push({Element:u,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(o.performance.timer),o.performance.timer=setTimeout(o.performance.display,100)},display:function(){var b=f.name+":",c=0;h=!1,clearTimeout(o.performance.timer),a.each(i,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",g&&(b+=" '"+g+"'"),e.size()>1&&(b+=" ("+e.size()+")"),(console.group!==d||console.table!==d)&&i.length>0&&(console.groupCollapsed(b),console.table?console.table(i):a.each(i,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),i=[]}},invoke:function(b,e,f){var g,h,i,j=v;return e=e||l,f=u||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,e):h!==d&&(i=h),a.isArray(c)?c.push(i):c!==d?c=[c,i]:i!==d&&(c=i),h}},k?(v===d&&o.initialize(),o.invoke(j)):(v!==d&&o.destroy(),o.initialize())}),c!==d?c:this},a.fn.state.settings={name:"State",debug:!0,verbose:!0,namespace:"state",performance:!0,onActivate:function(){},onDeactivate:function(){},onChange:function(){},activateTest:function(){return!0},deactivateTest:function(){return!0},automatic:!0,sync:!1,flashDuration:3e3,filter:{text:".loading, .disabled",active:".disabled"},context:!1,error:{method:"The method you called is not defined."},metadata:{promise:"promise",storedText:"stored-text"},className:{focus:"focus",hover:"hover",down:"down",active:"active",loading:"loading"},selector:{text:!1},defaults:{input:{hover:!0,focus:!0,down:!0,loading:!1,active:!1},button:{hover:!0,focus:!1,down:!0,active:!0,loading:!0}},states:{hover:!0,focus:!0,down:!0,loading:!1,active:!1},text:{flash:!1,hover:!1,active:!1,inactive:!1,enable:!1,disable:!1}}}(jQuery,window,document),function(a,b,c,d){a.fn.chatroom=function(b){var c,e=a(this),f=e.selector||"",g=(new Date).getTime(),h=[],i=arguments[0],j="string"==typeof i,k=[].slice.call(arguments,1);return a(this).each(function(){var c,e,l,m,n,o,p,q=a.extend(!0,{},a.fn.chatroom.settings,b),r=q.className,s=q.namespace,t=q.selector,u=q.error,v=a(this),w=v.find(t.expandButton),x=v.find(t.userListButton),y=v.find(t.userList),z=(v.find(t.room),v.find(t.userCount)),A=v.find(t.log),B=(v.find(t.message),v.find(t.messageInput)),C=v.find(t.messageButton),D=v.data("module"),E=this,F="",G={};p={width:{log:A.width(),userList:y.outerWidth()},initialize:function(){return Pusher===d&&p.error(u.pusher),q.key===d||q.channelName===d?(p.error(u.key),!1):q.endpoint.message||q.endpoint.authentication?(o=new Pusher(q.key),Pusher.channel_auth_endpoint=q.endpoint.authentication,c=o.subscribe(q.channelName),c.bind("pusher:subscription_succeeded",p.user.list.create),c.bind("pusher:subscription_error",p.error),c.bind("pusher:member_added",p.user.joined),c.bind("pusher:member_removed",p.user.left),c.bind("update_messages",p.message.receive),a.each(q.customEvents,function(a,b){c.bind(a,b) +}),x.on("click."+s,p.event.toggleUserList),w.on("click."+s,p.event.toggleExpand),B.on("keydown."+s,p.event.input.keydown).on("keyup."+s,p.event.input.keyup),C.on("mouseenter."+s,p.event.hover).on("mouseleave."+s,p.event.hover).on("click."+s,p.event.submit),A.animate({scrollTop:A.prop("scrollHeight")},400),void v.data("module",p).addClass(r.loading)):(p.error(u.endpoint),!1)},refresh:function(){x.removeClass(r.active),p.width={log:A.width(),userList:y.outerWidth()},x.hasClass(r.active)&&p.user.list.hide(),v.data("module",p)},user:{updateCount:function(){q.userCount&&(G=v.data("users"),m=0,a.each(G,function(){m++}),z.html(q.templates.userCount(m)))},joined:function(b){G=v.data("users"),"anonymous"!=b.id&&G[b.id]===d&&(G[b.id]=b.info,q.randomColor&&b.info.color===d&&(b.info.color=q.templates.color(b.id)),F=q.templates.userList(b.info),b.info.isAdmin?a(F).prependTo(y):a(F).appendTo(y),q.partingMessages&&(A.append(q.templates.joined(b.info)),p.message.scroll.test()),p.user.updateCount())},left:function(a){G=v.data("users"),a!==d&&"anonymous"!==a.id&&(delete G[a.id],v.data("users",G),y.find("[data-id="+a.id+"]").remove(),q.partingMessages&&(A.append(q.templates.left(a.info)),p.message.scroll.test()),p.user.updateCount())},list:{create:function(b){G={},b.each(function(a){"anonymous"!==a.id&&"undefined"!==a.id&&(q.randomColor&&a.info.color===d&&(a.info.color=q.templates.color(a.id)),F=a.info.isAdmin?q.templates.userList(a.info)+F:F+q.templates.userList(a.info),G[a.id]=a.info)}),v.data("users",G).data("user",G[b.me.id]).removeClass(r.loading),y.html(F),p.user.updateCount(),a.proxy(q.onJoin,y.children())()},show:function(){A.animate({width:p.width.log-p.width.userList},{duration:q.speed,easing:q.easing,complete:p.message.scroll.move})},hide:function(){A.stop().animate({width:p.width.log},{duration:q.speed,easing:q.easing,complete:p.message.scroll.move})}}},message:{scroll:{test:function(){n=A.prop("scrollHeight")-A.height(),Math.abs(A.scrollTop()-n)0&&(console.groupCollapsed(b),console.table?console.table(h):a.each(h,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),h=[]}},invoke:function(b,c,e){var f,g;return c=c||k,e=E||e,"string"==typeof b&&D!==d&&(b=b.split(/[\. ]/),f=b.length-1,a.each(b,function(c,e){a.isPlainObject(D[e])&&c!=f?D=D[e]:D[e]!==d?g=D[e]:p.error(u.method,b)})),a.isFunction(g)?g.apply(e,c):g||!1}},j?(D===d&&p.initialize(),p.invoke(i)):(D!==d&&p.destroy(),p.initialize())}),c!==d?c:this},a.fn.chatroom.settings={name:"Chat",debug:!1,namespace:"chat",channel:"present-chat",onJoin:function(){},onMessage:function(){},onExpand:function(){},onContract:function(){},customEvents:{},partingMessages:!1,userCount:!0,randomColor:!0,speed:300,easing:"easeOutQuint",scrollArea:9999,endpoint:{message:!1,authentication:!1},error:{method:"The method you called is not defined",endpoint:"Please define a message and authentication endpoint.",key:"You must specify a pusher key and channel.",pusher:"You must include the Pusher library."},className:{expand:"expand",active:"active",hover:"hover",down:"down",loading:"loading"},selector:{userCount:".actions .message",userListButton:".actions .list.button",expandButton:".actions .expand.button",room:".room",userList:".room .list",log:".room .log",message:".room .log .message",author:".room log .message .author",messageInput:".talk input",messageButton:".talk .send.button"},templates:{userCount:function(a){return a+" users in chat"},color:function(){var a=["#000000","#333333","#666666","#999999","#CC9999","#CC6666","#CC3333","#993333","#663333","#CC6633","#CC9966","#CC9933","#999966","#CCCC66","#99CC66","#669933","#669966","#33A3CC","#336633","#33CCCC","#339999","#336666","#336699","#6666CC","#9966CC","#333399","#663366","#996699","#993366","#CC6699"];return a[Math.floor(Math.random()*a.length)]},message:function(a){var b="";return a.user.isAdmin?(a.user.color="#55356A",b+='
',b+=''):b+='
',b+="

",b+=a.user.color!==d?''+a.user.name+": ":''+a.user.name+": ",b+=""+a.text+"

"},joined:function(a){return typeof a.name!==d?'
'+a.name+" has joined the chat.
":!1},left:function(a){return typeof a.name!==d?'
'+a.name+" has left the chat.
":!1},userList:function(a){var b="";return a.isAdmin&&(a.color="#55356A"),b+='
"}}}}(jQuery,window,document),function(a,b,c,d){a.fn.checkbox=function(b){var c,e=a(this),f=e.selector||"",g=(new Date).getTime(),h=[],i=arguments[0],j="string"==typeof i,k=[].slice.call(arguments,1);return e.each(function(){var e,l=a.extend(!0,{},a.fn.checkbox.settings,b),m=l.className,n=l.namespace,o=(l.error,"."+n),p="module-"+n,q=a(this),r=a(this).next(l.selector.label).first(),s=a(this).find(l.selector.input),t=q.selector||"",u=q.data(p),v=this;e={initialize:function(){e.verbose("Initializing checkbox",l),l.context&&""!==t?(e.verbose("Adding delegated events"),a(v,l.context).on(t,"click"+o,e.toggle).on(t+" + "+l.selector.label,"click"+o,e.toggle)):(q.on("click"+o,e.toggle).data(p,e),r.on("click"+o,e.toggle)),e.instantiate()},instantiate:function(){e.verbose("Storing instance of module",e),u=e,q.data(p,e)},destroy:function(){e.verbose("Destroying previous module"),q.off(o).removeData(p)},is:{radio:function(){return q.hasClass(m.radio)},enabled:function(){return s.prop("checked")!==d&&s.prop("checked")},disabled:function(){return!e.is.enabled()}},can:{disable:function(){return"boolean"==typeof l.required?l.required:!e.is.radio()}},enable:function(){e.debug("Enabling checkbox",s),s.prop("checked",!0).trigger("change"),a.proxy(l.onChange,s.get())(),a.proxy(l.onEnable,s.get())()},disable:function(){e.debug("Disabling checkbox"),s.prop("checked",!1).trigger("change"),a.proxy(l.onChange,s.get())(),a.proxy(l.onDisable,s.get())()},toggle:function(){e.verbose("Determining new checkbox state"),s.prop("disabled")||(e.is.disabled()?e.enable():e.is.enabled()&&e.can.disable()&&e.disable())},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,l,b);else{if(c===d)return l[b];l[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,e,b);else{if(c===d)return e[b];e[b]=c}},debug:function(){l.debug&&(l.performance?e.performance.log(arguments):(e.debug=Function.prototype.bind.call(console.info,console,l.name+":"),e.debug.apply(console,arguments)))},verbose:function(){l.verbose&&l.debug&&(l.performance?e.performance.log(arguments):(e.verbose=Function.prototype.bind.call(console.info,console,l.name+":"),e.verbose.apply(console,arguments)))},error:function(){e.error=Function.prototype.bind.call(console.error,console,l.name+":"),e.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;l.performance&&(b=(new Date).getTime(),d=g||b,c=b-d,g=b,h.push({Element:v,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(e.performance.timer),e.performance.timer=setTimeout(e.performance.display,100)},display:function(){var b=l.name+":",c=0;g=!1,clearTimeout(e.performance.timer),a.each(h,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",f&&(b+=" '"+f+"'"),(console.group!==d||console.table!==d)&&h.length>0&&(console.groupCollapsed(b),console.table?console.table(h):a.each(h,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),h=[]}},invoke:function(b,e,f){var g,h,i,j=u;return e=e||k,f=v||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,e):h!==d&&(i=h),a.isArray(c)?c.push(i):c!==d?c=[c,i]:i!==d&&(c=i),h}},j?(u===d&&e.initialize(),e.invoke(i)):(u!==d&&e.destroy(),e.initialize())}),c!==d?c:this},a.fn.checkbox.settings={name:"Checkbox",namespace:"checkbox",debug:!1,verbose:!0,performance:!0,context:!1,required:"auto",onChange:function(){},onEnable:function(){},onDisable:function(){},error:{method:"The method you called is not defined."},selector:{input:"input[type=checkbox], input[type=radio]",label:"label"},className:{radio:"radio"}}}(jQuery,window,document),function(a,b,c,d){a.fn.dimmer=function(b){var e,f=a(this),g=(new Date).getTime(),h=[],i=arguments[0],j="string"==typeof i,k=[].slice.call(arguments,1);return f.each(function(){var l,m,n,o=a.isPlainObject(b)?a.extend(!0,{},a.fn.dimmer.settings,b):a.extend({},a.fn.dimmer.settings),p=o.selector,q=o.namespace,r=o.className,s=(o.error,"."+q),t="module-"+q,u=f.selector||"",v="ontouchstart"in c.documentElement?"touchstart":"click",w=a(this),x=this,y=w.data(t);n={preinitialize:function(){n.is.dimmer()?(m=w.parent(),l=w):(m=w,l=n.has.dimmer()?m.children(p.dimmer).first():n.create())},initialize:function(){n.debug("Initializing dimmer",o),"hover"==o.on?m.on("mouseenter"+s,n.show).on("mouseleave"+s,n.hide):"click"==o.on&&m.on(v+s,n.toggle),n.is.page()&&(n.debug("Setting as a page dimmer",m),n.set.pageDimmer()),o.closable&&(n.verbose("Adding dimmer close event",l),l.on(v+s,n.event.click)),n.set.dimmable(),n.instantiate()},instantiate:function(){n.verbose("Storing instance of module",n),y=n,w.data(t,y)},destroy:function(){n.verbose("Destroying previous module",l),w.removeData(t),m.off(s),l.off(s)},event:{click:function(b){n.verbose("Determining if event occured on dimmer",b),(0===l.find(b.target).size()||a(b.target).is(p.content))&&(n.hide(),b.stopImmediatePropagation())}},addContent:function(b){var c=a(b);n.debug("Add content to dimmer",c),c.parent()[0]!==l[0]&&c.detach().appendTo(l)},create:function(){return a(o.template.dimmer()).appendTo(m)},animate:{show:function(b){b=a.isFunction(b)?b:function(){},n.set.dimmed(),"hover"!=o.on&&o.useCSS&&a.fn.transition!==d&&l.transition("is supported")?l.transition({animation:o.transition+" in",queue:!0,duration:n.get.duration(),complete:function(){n.set.active(),b()}}):(n.verbose("Showing dimmer animation with javascript"),l.stop().css({opacity:0,width:"100%",height:"100%"}).fadeTo(n.get.duration(),1,function(){l.removeAttr("style"),n.set.active(),b()}))},hide:function(b){b=a.isFunction(b)?b:function(){},"hover"!=o.on&&o.useCSS&&a.fn.transition!==d&&l.transition("is supported")?(n.verbose("Hiding dimmer with css"),l.transition({animation:o.transition+" out",duration:n.get.duration(),queue:!0,complete:function(){n.remove.dimmed(),n.remove.active(),b()}})):(n.verbose("Hiding dimmer with javascript"),l.stop().fadeOut(n.get.duration(),function(){l.removeAttr("style"),n.remove.dimmed(),n.remove.active(),b()}))}},get:{dimmer:function(){return l},duration:function(){return"object"==typeof o.duration?n.is.active()?o.duration.hide:o.duration.show:o.duration}},has:{dimmer:function(){return w.children(p.dimmer).size()>0}},is:{active:function(){return l.hasClass(r.active)},animating:function(){return l.is(":animated")||l.hasClass(r.transition)},dimmer:function(){return w.is(p.dimmer)},dimmable:function(){return w.is(p.dimmable)},dimmed:function(){return m.hasClass(r.dimmed)},disabled:function(){return m.hasClass(r.disabled)},enabled:function(){return!n.is.disabled()},page:function(){return m.is("body")},pageDimmer:function(){return l.hasClass(r.pageDimmer)}},can:{show:function(){return!l.hasClass(r.disabled)}},set:{active:function(){n.set.dimmed(),l.removeClass(r.transition).addClass(r.active)},dimmable:function(){m.addClass(r.dimmable)},dimmed:function(){m.addClass(r.dimmed)},pageDimmer:function(){l.addClass(r.pageDimmer)},disabled:function(){l.addClass(r.disabled)}},remove:{active:function(){l.removeClass(r.transition).removeClass(r.active)},dimmed:function(){m.removeClass(r.dimmed)},disabled:function(){l.removeClass(r.disabled)}},show:function(b){b=a.isFunction(b)?b:function(){},n.debug("Showing dimmer",l,o),!n.is.active()&&n.is.enabled()?(n.animate.show(b),a.proxy(o.onShow,x)(),a.proxy(o.onChange,x)()):n.debug("Dimmer is already shown or disabled")},hide:function(b){b=a.isFunction(b)?b:function(){},n.is.active()||n.is.animating()?(n.debug("Hiding dimmer",l),n.animate.hide(b),a.proxy(o.onHide,x)(),a.proxy(o.onChange,x)()):n.debug("Dimmer is not visible")},toggle:function(){n.verbose("Toggling dimmer visibility",l),n.is.dimmed()?n.hide():n.show()},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,o,b);else{if(c===d)return o[b];o[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,n,b);else{if(c===d)return n[b];n[b]=c}},debug:function(){o.debug&&(o.performance?n.performance.log(arguments):(n.debug=Function.prototype.bind.call(console.info,console,o.name+":"),n.debug.apply(console,arguments)))},verbose:function(){o.verbose&&o.debug&&(o.performance?n.performance.log(arguments):(n.verbose=Function.prototype.bind.call(console.info,console,o.name+":"),n.verbose.apply(console,arguments)))},error:function(){n.error=Function.prototype.bind.call(console.error,console,o.name+":"),n.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;o.performance&&(b=(new Date).getTime(),d=g||b,c=b-d,g=b,h.push({Element:x,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(n.performance.timer),n.performance.timer=setTimeout(n.performance.display,100)},display:function(){var b=o.name+":",c=0;g=!1,clearTimeout(n.performance.timer),a.each(h,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",u&&(b+=" '"+u+"'"),f.size()>1&&(b+=" ("+f.size()+")"),(console.group!==d||console.table!==d)&&h.length>0&&(console.groupCollapsed(b),console.table?console.table(h):a.each(h,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),h=[]}},invoke:function(b,c,f){var g,h,i,j=y;return c=c||k,f=x||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,c):h!==d&&(i=h),a.isArray(e)?e.push(i):e!==d?e=[e,i]:i!==d&&(e=i),h}},n.preinitialize(),j?(y===d&&n.initialize(),n.invoke(i)):(y!==d&&n.destroy(),n.initialize())}),e!==d?e:this},a.fn.dimmer.settings={name:"Dimmer",namespace:"dimmer",debug:!1,verbose:!0,performance:!0,transition:"fade",useCSS:!0,on:!1,closable:!0,duration:{show:500,hide:500},onChange:function(){},onShow:function(){},onHide:function(){},error:{method:"The method you called is not defined."},selector:{dimmable:".ui.dimmable",dimmer:".ui.dimmer",content:".ui.dimmer > .content, .ui.dimmer > .content > .center"},template:{dimmer:function(){return a("
").attr("class","ui dimmer")}},className:{active:"active",dimmable:"ui dimmable",dimmed:"dimmed",disabled:"disabled",pageDimmer:"page",hide:"hide",show:"show",transition:"transition"}}}(jQuery,window,document),function(a,b,c,d){a.fn.dropdown=function(b){var e,f=a(this),g=a(c),h=f.selector||"",i="ontouchstart"in c.documentElement,j=(new Date).getTime(),k=[],l=arguments[0],m="string"==typeof l,n=[].slice.call(arguments,1);return f.each(function(){var c,o=a.isPlainObject(b)?a.extend(!0,{},a.fn.dropdown.settings,b):a.extend({},a.fn.dropdown.settings),p=o.className,q=o.metadata,r=o.namespace,s=o.selector,t=o.error,u="."+r,v="module-"+r,w=a(this),x=w.find(s.item),y=w.find(s.text),z=w.find(s.input),A=w.children(s.menu),B=this,C=w.data(v);c={initialize:function(){c.debug("Initializing dropdown",o),c.save.defaults(),c.set.selected(),i&&c.bind.touchEvents(),c.bind.mouseEvents(),c.bind.keyboardEvents(),c.instantiate()},instantiate:function(){c.verbose("Storing instance of dropdown",c),C=c,w.data(v,c)},destroy:function(){c.verbose("Destroying previous dropdown for",w),x.off(u),w.off(u).removeData(v)},bind:{keyboardEvents:function(){c.debug("Binding keyboard events"),w.on("keydown"+u,c.handleKeyboard),w.on("focus"+u,c.show)},touchEvents:function(){c.debug("Touch device detected binding touch events"),w.on("touchstart"+u,c.event.test.toggle),x.on("touchstart"+u,c.event.item.mouseenter).on("touchstart"+u,c.event.item.click)},mouseEvents:function(){c.verbose("Mouse detected binding mouse events"),"click"==o.on?w.on("click"+u,c.event.test.toggle):"hover"==o.on?w.on("mouseenter"+u,c.delay.show).on("mouseleave"+u,c.delay.hide):w.on(o.on+u,c.toggle),x.on("mouseenter"+u,c.event.item.mouseenter).on("mouseleave"+u,c.event.item.mouseleave).on("click"+u,c.event.item.click)},intent:function(){c.verbose("Binding hide intent event to document"),i&&g.on("touchstart"+u,c.event.test.touch).on("touchmove"+u,c.event.test.touch),g.on("click"+u,c.event.test.hide)}},unbind:{intent:function(){c.verbose("Removing hide intent event from document"),i&&g.off("touchstart"+u).off("touchmove"+u),g.off("click"+u)}},handleKeyboard:function(b){var d,e=x.filter("."+p.selected),f=b.which,g={enter:13,escape:27,upArrow:38,downArrow:40},h=p.selected,i=x.index(e),j=e.size()>0,k=x.size();if(f==g.escape&&(c.verbose("Escape key pressed, closing dropdown"),c.hide()),c.is.visible()){if(f==g.enter&&j)return c.verbose("Enter key pressed, choosing selected item"),a.proxy(c.event.item.click,x.filter("."+h))(b),b.preventDefault(),!1;f==g.upArrow?(c.verbose("Up key pressed, changing active item"),d=0>i-1?i:i-1,x.removeClass(h).eq(d).addClass(h),b.preventDefault()):f==g.downArrow&&(c.verbose("Down key pressed, changing active item"),d=i+1>=k?i:i+1,x.removeClass(h).eq(d).addClass(h),b.preventDefault())}else f==g.enter&&c.show()},event:{test:{toggle:function(a){c.determine.intent(a,c.toggle)&&a.preventDefault()},touch:function(a){c.determine.intent(a,function(){"touchstart"==a.type?c.timer=setTimeout(c.hide,o.delay.touch):"touchmove"==a.type&&clearTimeout(c.timer)}),a.stopPropagation()},hide:function(a){c.determine.intent(a,c.hide)}},item:{mouseenter:function(b){var d=a(this).find(s.submenu),e=a(this).siblings(s.item).children(s.menu);(d.length>0||e.length>0)&&(clearTimeout(c.itemTimer),c.itemTimer=setTimeout(function(){e.length>0&&c.animate.hide(!1,e.filter(":visible")),d.length>0&&(c.verbose("Showing sub-menu",d),c.animate.show(!1,d))},2*o.delay.show),b.preventDefault(),b.stopPropagation())},mouseleave:function(){var b=a(this).find(s.menu);b.size()>0&&(clearTimeout(c.itemTimer),c.itemTimer=setTimeout(function(){c.verbose("Hiding sub-menu",b),c.animate.hide(!1,b)},o.delay.hide))},click:function(b){var e=a(this),f=e.data(q.text)!==d?e.data(q.text):e.text(),g=e.data(q.value)!==d?e.data(q.value):"string"==typeof f?f.toLowerCase():f,h=function(){c.determine.selectAction(f,g),a.proxy(o.onChange,B)(g,f)};0===e.find(s.menu).size()&&("touchstart"==b.type?e.one("click",h):h())}},resetStyle:function(){a(this).removeAttr("style")}},determine:{selectAction:function(b,d){c.verbose("Determining action",o.action),a.isFunction(c.action[o.action])?(c.verbose("Triggering preset action",o.action,b,d),c.action[o.action](b,d)):a.isFunction(o.action)?(c.verbose("Triggering user action",o.action,b,d),o.action(b,d)):c.error(t.action,o.action)},intent:function(b,d){return c.debug("Determining whether event occurred in dropdown",b.target),d=d||function(){},0===a(b.target).closest(A).size()?(c.verbose("Triggering event",d),d(),!0):(c.verbose("Event occurred in dropdown, canceling callback"),!1)}},action:{nothing:function(){},hide:function(){c.hide()},activate:function(a,b){b=b!==d?b:a,c.set.selected(b),c.set.value(b),c.hide()},auto:function(a,b){b=b!==d?b:a,c.set.selected(b),c.set.value(b),c.hide()},changeText:function(a,b){b=b!==d?b:a,c.set.selected(b),c.hide()},updateForm:function(a,b){b=b!==d?b:a,c.set.selected(b),c.set.value(b),c.hide()}},get:{text:function(){return y.text()},value:function(){return z.size()>0?z.val():w.data(q.value)},item:function(b,e){var f=!1;return b=b!==d?b:c.get.value()!==d?c.get.value():c.get.text(),e===d&&""===b?(c.debug("Ambiguous dropdown value using strict type check",b),e=!0):e=e||!1,b!==d?x.each(function(){var c=a(this),g=c.data(q.text)!==d?c.data(q.text):c.text(),h=c.data(q.value)!==d?c.data(q.value):"string"==typeof g?g.toLowerCase():g;e?h===b?f=a(this):f||g!==b||(f=a(this)):h==b?f=a(this):f||g!=b||(f=a(this))}):b=c.get.text(),f||!1}},restore:{defaults:function(){c.restore.defaultText(),c.restore.defaultValue()},defaultText:function(){var a=w.data(q.defaultText);c.debug("Restoring default text",a),c.set.text(a)},defaultValue:function(){var a=w.data(q.defaultValue);a!==d&&(c.debug("Restoring default value",a),c.set.selected(a),c.set.value(a))}},save:{defaults:function(){c.save.defaultText(),c.save.defaultValue()},defaultValue:function(){w.data(q.defaultValue,c.get.value())},defaultText:function(){w.data(q.defaultText,y.text())}},set:{text:function(a){c.debug("Changing text",a,y),y.removeClass(p.placeholder),y.text(a)},value:function(a){c.debug("Adding selected value to hidden input",a,z),z.size()>0?z.val(a).trigger("change"):w.data(q.value,a)},active:function(){w.addClass(p.active)},visible:function(){w.addClass(p.visible)},selected:function(a){var b,e=c.get.item(a);e&&(c.debug("Setting selected menu item to",e),b=e.data(q.text)!==d?e.data(q.text):e.text(),x.removeClass(p.active),e.addClass(p.active),c.set.text(b))}},remove:{active:function(){w.removeClass(p.active)},visible:function(){w.removeClass(p.visible)}},is:{selection:function(){return w.hasClass(p.selection)},animated:function(a){return a?a.is(":animated")||a.transition&&a.transition("is animating"):A.is(":animated")||A.transition&&A.transition("is animating")},visible:function(a){return a?a.is(":visible"):A.is(":visible")},hidden:function(a){return a?a.is(":not(:visible)"):A.is(":not(:visible)")}},can:{click:function(){return i||"click"==o.on},show:function(){return!w.hasClass(p.disabled)}},animate:{show:function(b,e){var f=e||A;b=b||function(){},c.is.hidden(f)&&(c.verbose("Doing menu show animation",f),"none"==o.transition?b():a.fn.transition!==d&&w.transition("is supported")?f.transition({animation:o.transition+" in",duration:o.duration,complete:b,queue:!1}):"slide down"==o.transition?f.hide().clearQueue().children().clearQueue().css("opacity",0).delay(50).animate({opacity:1},o.duration,"easeOutQuad",c.event.resetStyle).end().slideDown(100,"easeOutQuad",function(){a.proxy(c.event.resetStyle,this)(),b()}):"fade"==o.transition?f.hide().clearQueue().fadeIn(o.duration,function(){a.proxy(c.event.resetStyle,this)(),b()}):c.error(t.transition,o.transition))},hide:function(b,e){var f=e||A;b=b||function(){},c.is.visible(f)&&(c.verbose("Doing menu hide animation",f),a.fn.transition!==d&&w.transition("is supported")?f.transition({animation:o.transition+" out",duration:o.duration,complete:b,queue:!1}):"none"==o.transition?b():"slide down"==o.transition?f.show().clearQueue().children().clearQueue().css("opacity",1).animate({opacity:0},100,"easeOutQuad",c.event.resetStyle).end().delay(50).slideUp(100,"easeOutQuad",function(){a.proxy(c.event.resetStyle,this)(),b()}):"fade"==o.transition?f.show().clearQueue().fadeOut(150,function(){a.proxy(c.event.resetStyle,this)(),b()}):c.error(t.transition))}},show:function(){c.debug("Checking if dropdown can show"),c.is.hidden()&&(c.hideOthers(),c.set.active(),c.animate.show(function(){c.can.click()&&c.bind.intent(),c.set.visible()}),a.proxy(o.onShow,B)())},hide:function(){!c.is.animated()&&c.is.visible()&&(c.debug("Hiding dropdown"),c.can.click()&&c.unbind.intent(),c.remove.active(),c.animate.hide(c.remove.visible),a.proxy(o.onHide,B)())},delay:{show:function(){c.verbose("Delaying show event to ensure user intent"),clearTimeout(c.timer),c.timer=setTimeout(c.show,o.delay.show)},hide:function(){c.verbose("Delaying hide event to ensure user intent"),clearTimeout(c.timer),c.timer=setTimeout(c.hide,o.delay.hide)}},hideOthers:function(){c.verbose("Finding other dropdowns to hide"),f.not(w).has(s.menu+":visible").dropdown("hide")},toggle:function(){c.verbose("Toggling menu visibility"),c.is.hidden()?c.show():c.hide()},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,o,b);else{if(c===d)return o[b];o[b]=c}},internal:function(b,e){if(a.isPlainObject(b))a.extend(!0,c,b);else{if(e===d)return c[b];c[b]=e}},debug:function(){o.debug&&(o.performance?c.performance.log(arguments):(c.debug=Function.prototype.bind.call(console.info,console,o.name+":"),c.debug.apply(console,arguments)))},verbose:function(){o.verbose&&o.debug&&(o.performance?c.performance.log(arguments):(c.verbose=Function.prototype.bind.call(console.info,console,o.name+":"),c.verbose.apply(console,arguments)))},error:function(){c.error=Function.prototype.bind.call(console.error,console,o.name+":"),c.error.apply(console,arguments)},performance:{log:function(a){var b,d,e;o.performance&&(b=(new Date).getTime(),e=j||b,d=b-e,j=b,k.push({Element:B,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":d})),clearTimeout(c.performance.timer),c.performance.timer=setTimeout(c.performance.display,100)},display:function(){var b=o.name+":",e=0;j=!1,clearTimeout(c.performance.timer),a.each(k,function(a,b){e+=b["Execution Time"]}),b+=" "+e+"ms",h&&(b+=" '"+h+"'"),(console.group!==d||console.table!==d)&&k.length>0&&(console.groupCollapsed(b),console.table?console.table(k):a.each(k,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),k=[]}},invoke:function(b,f,g){var h,i,j,k=C;return f=f||n,g=B||g,"string"==typeof b&&k!==d&&(b=b.split(/[\. ]/),h=b.length-1,a.each(b,function(e,f){var g=e!=h?f+b[e+1].charAt(0).toUpperCase()+b[e+1].slice(1):b;if(a.isPlainObject(k[g])&&e!=h)k=k[g];else{if(k[g]!==d)return i=k[g],!1;if(!a.isPlainObject(k[f])||e==h)return k[f]!==d?(i=k[f],!1):(c.error(t.method,b),!1);k=k[f]}})),a.isFunction(i)?j=i.apply(g,f):i!==d&&(j=i),a.isArray(e)?e.push(j):e!==d?e=[e,j]:j!==d&&(e=j),i}},m?(C===d&&c.initialize(),c.invoke(l)):(C!==d&&c.destroy(),c.initialize())}),e!==d?e:this},a.fn.dropdown.settings={name:"Dropdown",namespace:"dropdown",debug:!1,verbose:!0,performance:!0,on:"click",action:"activate",delay:{show:200,hide:300,touch:50},transition:"slide down",duration:250,onChange:function(){},onShow:function(){},onHide:function(){},error:{action:"You called a dropdown action that was not defined",method:"The method you called is not defined.",transition:"The requested transition was not found"},metadata:{defaultText:"defaultText",defaultValue:"defaultValue",text:"text",value:"value"},selector:{menu:".menu",submenu:"> .menu",item:".menu > .item",text:"> .text",input:'> input[type="hidden"]'},className:{active:"active",placeholder:"default",disabled:"disabled",visible:"visible",selected:"selected",selection:"selection"}},a.extend(a.easing,{easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c}})}(jQuery,window,document),function(a,b,c,d){a.fn.modal=function(e){var f,g=a(this),h=a(b),i=a(c),j=a("body"),k=(new Date).getTime(),l=[],m=arguments[0],n="string"==typeof m,o=[].slice.call(arguments,1),p=b.requestAnimationFrame||b.mozRequestAnimationFrame||b.webkitRequestAnimationFrame||b.msRequestAnimationFrame||function(a){setTimeout(a,0)};return g.each(function(){var q,r,s,t,u,v,w=a.isPlainObject(e)?a.extend(!0,{},a.fn.modal.settings,e):a.extend({},a.fn.modal.settings),x=w.selector,y=w.className,z=w.namespace,A=w.error,B="."+z,C="module-"+z,D=g.selector||"",E=a(this),F=a(w.context),G=E.find(x.close),H=this,I=E.data(C);v={initialize:function(){return v.verbose("Initializing dimmer",F),a.fn.dimmer===d?void v.error(A.dimmer):(t=F.dimmer({closable:!1,useCSS:!0,duration:{show:.9*w.duration,hide:1.1*w.duration}}),w.detachable&&t.dimmer("add content",E),u=t.dimmer("get dimmer"),v.refreshSelectors(),v.verbose("Attaching close events",G),G.on("click"+B,v.event.close),h.on("resize"+B,v.event.resize),void v.instantiate())},instantiate:function(){v.verbose("Storing instance of modal"),I=v,E.data(C,I)},destroy:function(){v.verbose("Destroying previous modal"),E.removeData(C).off(B),G.off(B),F.dimmer("destroy")},refresh:function(){v.remove.scrolling(),v.cacheSizes(),v.set.screenHeight(),v.set.type(),v.set.position()},refreshSelectors:function(){r=E.siblings(x.modal),q=r.add(E)},attachEvents:function(b,c){var d=a(b);c=a.isFunction(v[c])?v[c]:v.toggle,d.size()>0?(v.debug("Attaching modal events to element",b,c),d.off(B).on("click"+B,c)):v.error(A.notFound)},event:{close:function(){v.verbose("Closing element pressed"),a(this).is(x.approve)?a.proxy(w.onApprove,H)()!==!1?v.hide():v.verbose("Approve callback returned false cancelling hide"):a(this).is(x.deny)?a.proxy(w.onDeny,H)()!==!1?v.hide():v.verbose("Deny callback returned false cancelling hide"):v.hide()},click:function(b){0===a(b.target).closest(x.modal).size()&&(v.debug("Dimmer clicked, hiding all modals"),w.allowMultiple?v.hide():v.hideAll(),b.stopImmediatePropagation())},debounce:function(a,b){clearTimeout(v.timer),v.timer=setTimeout(a,b)},keyboard:function(a){var b=a.which,c=27;b==c&&(w.closable?(v.debug("Escape key pressed hiding modal"),v.hide()):v.debug("Escape key pressed, but closable is set to false"),a.preventDefault())},resize:function(){t.dimmer("is active")&&p(v.refresh)}},toggle:function(){v.is.active()?v.hide():v.show()},show:function(b){b=a.isFunction(b)?b:function(){},v.showDimmer(),v.showModal(b)},onlyVisible:function(){return v.refreshSelectors(),v.is.active()&&0===r.filter(":visible").size() +},othersVisible:function(){return v.refreshSelectors(),r.filter(":visible").size()>0},showModal:function(b){if(v.is.active())return void v.debug("Modal is already visible");if(b=a.isFunction(b)?b:function(){},v.save.focus(),v.add.keyboardShortcuts(),v.cache===d&&v.cacheSizes(),v.set.position(),v.set.screenHeight(),v.set.type(),v.othersVisible()&&!w.allowMultiple)v.debug("Other modals visible, queueing show animation"),v.hideOthers(v.showModal);else{a.proxy(w.onShow,H)();var c=function(){v.set.active(),a.proxy(w.onVisible,H)(),b()};w.transition&&a.fn.transition!==d&&E.transition("is supported")?(v.debug("Showing modal with css animations"),E.transition(w.transition+" in",w.duration,c)):(v.debug("Showing modal with javascript"),E.fadeIn(w.duration,w.easing,c))}},showDimmer:function(){t.dimmer("is active")?v.debug("Dimmer is already visible"):(v.debug("Showing dimmer"),t.dimmer("show"))},hide:function(b){b=a.isFunction(b)?b:function(){},v.refreshSelectors(),v.onlyVisible()&&v.hideDimmer(),v.hideModal(b)},hideDimmer:function(){return v.is.active()?(v.debug("Hiding dimmer"),w.closable&&u.off("click"+B),void t.dimmer("hide",function(){w.transition&&a.fn.transition!==d&&E.transition("is supported")&&(E.transition("reset"),v.remove.screenHeight()),v.remove.active()})):void v.debug("Dimmer is already hidden")},hideModal:function(b){if(!v.is.active())return void v.debug("Modal is already hidden");b=a.isFunction(b)?b:function(){},v.restore.focus(),v.remove.keyboardShortcuts(),a.proxy(w.onHide,H)();var c=function(){v.remove.active(),a.proxy(w.onHidden,H)(),b()};w.transition&&a.fn.transition!==d&&E.transition("is supported")?(v.debug("Hiding modal with css animations"),E.transition(w.transition+" out",w.duration,c)):(v.debug("Hiding modal with javascript"),E.fadeOut(w.duration,w.easing,c))},hideAll:function(b){b=a.isFunction(b)?b:function(){},(E.is(":visible")||v.othersVisible())&&(v.debug("Hiding all visible modals"),v.hideDimmer(),q.filter(":visible").modal("hide modal",b))},hideOthers:function(b){b=a.isFunction(b)?b:function(){},v.othersVisible()&&(v.debug("Hiding other modals"),r.filter(":visible").modal("hide modal",b))},add:{keyboardShortcuts:function(){v.verbose("Adding keyboard shortcuts"),i.on("keyup"+B,v.event.keyboard)}},save:{focus:function(){s=a(c.activeElement).blur()}},restore:{focus:function(){s&&s.size()>0&&s.focus()}},remove:{active:function(){E.removeClass(y.active)},screenHeight:function(){v.cache.height>v.cache.pageHeight&&(v.debug("Removing page height"),j.css("height",""))},keyboardShortcuts:function(){v.verbose("Removing keyboard shortcuts"),i.off("keyup"+B)},scrolling:function(){t.removeClass(y.scrolling),E.removeClass(y.scrolling)}},cacheSizes:function(){var d=E.outerHeight();0!==d&&(v.cache={pageHeight:a(c).outerHeight(),height:d+w.offset,contextHeight:"body"==w.context?a(b).height():t.height()},v.debug("Caching modal and container sizes",v.cache))},can:{fit:function(){return v.cache.heightv.cache.pageHeight&&(v.debug("Modal is taller than page content, resizing page height"),j.css("height",v.cache.height+w.padding))},active:function(){if(E.addClass(y.active),w.closable&&u.off("click"+B).on("click"+B,v.event.click),w.autofocus){var a=E.find(":input:visible"),b=a.filter("[autofocus]"),c=b.length?b:a;c.first().focus()}},scrolling:function(){t.addClass(y.scrolling),E.addClass(y.scrolling)},type:function(){v.can.fit()?(v.verbose("Modal fits on screen"),v.remove.scrolling()):(v.verbose("Modal cannot fit on screen setting to scrolling"),v.set.scrolling())},position:function(){v.verbose("Centering modal on page",v.cache),E.css(v.can.fit()?{top:"",marginTop:-(v.cache.height/2)}:{marginTop:"1em",top:i.scrollTop()})}},setting:function(b,c){if(v.debug("Changing setting",b,c),a.isPlainObject(b))a.extend(!0,w,b);else{if(c===d)return w[b];w[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,v,b);else{if(c===d)return v[b];v[b]=c}},debug:function(){w.debug&&(w.performance?v.performance.log(arguments):(v.debug=Function.prototype.bind.call(console.info,console,w.name+":"),v.debug.apply(console,arguments)))},verbose:function(){w.verbose&&w.debug&&(w.performance?v.performance.log(arguments):(v.verbose=Function.prototype.bind.call(console.info,console,w.name+":"),v.verbose.apply(console,arguments)))},error:function(){v.error=Function.prototype.bind.call(console.error,console,w.name+":"),v.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;w.performance&&(b=(new Date).getTime(),d=k||b,c=b-d,k=b,l.push({Element:H,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(v.performance.timer),v.performance.timer=setTimeout(v.performance.display,100)},display:function(){var b=w.name+":",c=0;k=!1,clearTimeout(v.performance.timer),a.each(l,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",D&&(b+=" '"+D+"'"),(console.group!==d||console.table!==d)&&l.length>0&&(console.groupCollapsed(b),console.table?console.table(l):a.each(l,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),l=[]}},invoke:function(b,c,e){var g,h,i,j=I;return c=c||o,e=H||e,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(e,c):h!==d&&(i=h),a.isArray(f)?f.push(i):f!==d?f=[f,i]:i!==d&&(f=i),h}},n?(I===d&&v.initialize(),v.invoke(m)):(I!==d&&v.destroy(),v.initialize())}),f!==d?f:this},a.fn.modal.settings={name:"Modal",namespace:"modal",debug:!1,verbose:!0,performance:!0,allowMultiple:!0,detachable:!0,closable:!0,autofocus:!0,context:"body",duration:500,easing:"easeOutQuad",offset:0,transition:"scale",padding:30,onShow:function(){},onHide:function(){},onVisible:function(){},onHidden:function(){},onApprove:function(){return!0},onDeny:function(){return!0},selector:{close:".close, .actions .button",approve:".actions .positive, .actions .approve, .actions .ok",deny:".actions .negative, .actions .deny, .actions .cancel",modal:".ui.modal"},error:{dimmer:"UI Dimmer, a required component is not included in this page",method:"The method you called is not defined."},className:{active:"active",scrolling:"scrolling"}},a.extend(a.easing,{easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c}})}(jQuery,window,document),function(a,b,c,d){a.fn.nag=function(c){var e,f=a(this),g=f.selector||"",h=(new Date).getTime(),i=[],j=arguments[0],k="string"==typeof j,l=[].slice.call(arguments,1);return a(this).each(function(){var m,n,o,p,q,r,s,t,u,v=a.extend(!0,{},a.fn.nag.settings,c),w=v.className,x=v.selector,y=v.error,z=v.namespace,A="."+z,B=z+"-module",C=a(this),D=C.find(x.close),E=a(v.context),F=this,G=C.data(B),H=b.requestAnimationFrame||b.mozRequestAnimationFrame||b.webkitRequestAnimationFrame||b.msRequestAnimationFrame||function(a){setTimeout(a,0)};u={initialize:function(){u.verbose("Initializing element"),m=C.offset(),n=C.outerHeight(),o=E.outerWidth(),p=E.outerHeight(),q=E.offset(),C.data(B,u),D.on("click"+A,u.dismiss),v.context==b&&"fixed"==v.position&&C.addClass(w.fixed),v.sticky&&(u.verbose("Adding scroll events"),"absolute"==v.position?E.on("scroll"+A,u.event.scroll).on("resize"+A,u.event.scroll):a(b).on("scroll"+A,u.event.scroll).on("resize"+A,u.event.scroll),a.proxy(u.event.scroll,this)()),v.displayTime>0&&setTimeout(u.hide,v.displayTime),u.should.show()?C.is(":visible")||u.show():u.hide()},destroy:function(){u.verbose("Destroying instance"),C.removeData(B).off(A),v.sticky&&E.off(A)},refresh:function(){u.debug("Refreshing cached calculations"),m=C.offset(),n=C.outerHeight(),o=E.outerWidth(),p=E.outerHeight(),q=E.offset()},show:function(){u.debug("Showing nag",v.animation.show),"fade"==v.animation.show?C.fadeIn(v.duration,v.easing):C.slideDown(v.duration,v.easing)},hide:function(){u.debug("Showing nag",v.animation.hide),"fade"==v.animation.show?C.fadeIn(v.duration,v.easing):C.slideUp(v.duration,v.easing)},onHide:function(){u.debug("Removing nag",v.animation.hide),C.remove(),v.onHide&&v.onHide()},stick:function(){if(u.refresh(),"fixed"==v.position){var c=a(b).prop("pageYOffset")||a(b).scrollTop(),d=C.hasClass(w.bottom)?q.top+(p-n)-c:q.top-c;C.css({position:"fixed",top:d,left:q.left,width:o-v.scrollBarWidth})}else C.css({top:s})},unStick:function(){C.css({top:""})},dismiss:function(a){v.storageMethod&&u.storage.set(v.storedKey,v.storedValue),u.hide(),a.stopImmediatePropagation(),a.preventDefault()},should:{show:function(){return v.persist?(u.debug("Persistent nag is set, can show nag"),!0):u.storage.get(v.storedKey)!=v.storedValue?(u.debug("Stored value is not set, can show nag",u.storage.get(v.storedKey)),!0):(u.debug("Stored value is set, cannot show nag",u.storage.get(v.storedKey)),!1)},stick:function(){return r=E.prop("pageYOffset")||E.scrollTop(),s=C.hasClass(w.bottom)?p-C.outerHeight()+r:r,s>m.top?!0:"fixed"==v.position?!0:!1}},storage:{set:function(c,e){u.debug("Setting stored value",c,e,v.storageMethod),"local"==v.storageMethod&&b.store!==d?b.store.set(c,e):a.cookie!==d?a.cookie(c,e):u.error(y.noStorage)},get:function(c){return u.debug("Getting stored value",c,v.storageMethod),"local"==v.storageMethod&&b.store!==d?b.store.get(c):a.cookie!==d?a.cookie(c):void u.error(y.noStorage)}},event:{scroll:function(){t!==d&&clearTimeout(t),t=setTimeout(function(){u.should.stick()?H(u.stick):u.unStick()},v.lag)}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,v,b);else{if(c===d)return v[b];v[b]=c}},internal:function(b,c){return u.debug("Changing internal",b,c),c===d?u[b]:void(a.isPlainObject(b)?a.extend(!0,u,b):u[b]=c)},debug:function(){v.debug&&(v.performance?u.performance.log(arguments):(u.debug=Function.prototype.bind.call(console.info,console,v.name+":"),u.debug.apply(console,arguments)))},verbose:function(){v.verbose&&v.debug&&(v.performance?u.performance.log(arguments):(u.verbose=Function.prototype.bind.call(console.info,console,v.name+":"),u.verbose.apply(console,arguments)))},error:function(){u.error=Function.prototype.bind.call(console.error,console,v.name+":"),u.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;v.performance&&(b=(new Date).getTime(),d=h||b,c=b-d,h=b,i.push({Element:F,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(u.performance.timer),u.performance.timer=setTimeout(u.performance.display,100)},display:function(){var b=v.name+":",c=0;h=!1,clearTimeout(u.performance.timer),a.each(i,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",g&&(b+=" '"+g+"'"),f.size()>1&&(b+=" ("+f.size()+")"),(console.group!==d||console.table!==d)&&i.length>0&&(console.groupCollapsed(b),console.table?console.table(i):a.each(i,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),i=[]}},invoke:function(b,c,f){var g,h,i,j=G;return c=c||l,f=F||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,c):h!==d&&(i=h),a.isArray(e)?e.push(i):e!==d?e=[e,i]:i!==d&&(e=i),h}},k?(G===d&&u.initialize(),u.invoke(j)):(G!==d&&u.destroy(),u.initialize())}),e!==d?e:this},a.fn.nag.settings={name:"Nag",debug:!1,verbose:!0,performance:!0,namespace:"Nag",persist:!1,displayTime:0,animation:{show:"slide",hide:"slide"},position:"fixed",scrollBarWidth:18,storageMethod:"cookie",storedKey:"nag",storedValue:"dismiss",sticky:!1,lag:0,context:b,error:{noStorage:"Neither $.cookie or store is defined. A storage solution is required for storing state",method:"The method you called is not defined."},className:{bottom:"bottom",fixed:"fixed"},selector:{close:".icon.close"},speed:500,easing:"easeOutQuad",onHide:function(){}}}(jQuery,window,document),function(a,b,c,d){a.fn.popup=function(e){var f,g=a(this),h=a(c),i=g.selector||"",j=(new Date).getTime(),k=[],l=arguments[0],m="string"==typeof l,n=[].slice.call(arguments,1);return g.each(function(){var c,g=a.isPlainObject(e)?a.extend(!0,{},a.fn.popup.settings,e):a.extend({},a.fn.popup.settings),o=g.selector,p=g.className,q=g.error,r=g.metadata,s=g.namespace,t="."+g.namespace,u="module-"+s,v=a(this),w=a(g.context),x=g.target?a(g.target):v,y=a(b),z=g.inline?x.offsetParent():y,A=g.inline?x.next(g.selector.popup):y.children(g.selector.popup).last(),B=0,C=this,D=v.data(u);c={initialize:function(){c.debug("Initializing module",v),"click"==g.on?v.on("click",c.toggle):v.on(c.get.startEvent()+t,c.event.start).on(c.get.endEvent()+t,c.event.end),g.target&&c.debug("Target set to element",x),y.on("resize"+t,c.event.resize),c.instantiate()},instantiate:function(){c.verbose("Storing instance of module",c),D=c,v.data(u,D)},refresh:function(){g.inline?(A=x.next(o.popup),z=x.offsetParent()):A=y.children(o.popup).last()},destroy:function(){c.debug("Destroying previous module"),y.off(t),A.remove(),v.off(t).removeData(u)},event:{start:function(){c.timer=setTimeout(function(){c.is.hidden()&&c.show()},g.delay)},end:function(){clearTimeout(c.timer),c.is.visible()&&c.hide()},resize:function(){c.is.visible()&&c.set.position()}},create:function(){c.debug("Creating pop-up html");var b=v.data(r.html)||g.html,d=v.data(r.variation)||g.variation,e=v.data(r.title)||g.title,f=v.data(r.content)||v.attr("title")||g.content;b||f||e?(b||(b=g.template({title:e,content:f})),A=a("
").addClass(p.popup).addClass(d).html(b),g.inline?(c.verbose("Inserting popup element inline",A),A.data(u,D).insertAfter(v)):(c.verbose("Appending popup element to body",A),A.data(u,D).appendTo(w)),a.proxy(g.onCreate,A)()):c.error(q.content)},toggle:function(){c.debug("Toggling pop-up"),c.is.hidden()?(c.debug("Popup is hidden, showing pop-up"),c.unbind.close(),c.hideAll(),c.show()):(c.debug("Popup is visible, hiding pop-up"),c.hide())},show:function(a){a=a||function(){},c.debug("Showing pop-up",g.transition),g.preserve||c.refresh(),c.exists()||c.create(),c.save.conditions(),c.set.position(),c.animate.show(a)},hide:function(a){a=a||function(){},v.removeClass(p.visible),c.restore.conditions(),c.unbind.close(),c.is.visible()&&c.animate.hide(a)},hideAll:function(){a(o.popup).filter(":visible").popup("hide")},hideGracefully:function(b){b&&0===a(b.target).closest(o.popup).size()?(c.debug("Click occurred outside popup hiding popup"),c.hide()):c.debug("Click was inside popup, keeping popup open")},exists:function(){return g.inline?0!==A.size():A.parent(w).size()},remove:function(){c.debug("Removing popup"),A.remove(),a.proxy(g.onRemove,A)()},save:{conditions:function(){c.cache={title:v.attr("title")},c.cache.title&&v.removeAttr("title"),c.verbose("Saving original attributes",c.cache.title)}},restore:{conditions:function(){return c.cache&&c.cache.title&&(v.attr("title",c.cache.title),c.verbose("Restoring original attributes",c.cache.title)),!0}},animate:{show:function(b){b=b||function(){},v.addClass(p.visible),g.transition&&a.fn.transition!==d&&v.transition("is supported")?A.transition(g.transition+" in",g.duration,function(){c.bind.close(),a.proxy(b,C)()}):A.stop().fadeIn(g.duration,g.easing,function(){c.bind.close(),a.proxy(b,C)()}),a.proxy(g.onShow,C)()},hide:function(b){b=b||function(){},c.debug("Hiding pop-up"),g.transition&&a.fn.transition!==d&&v.transition("is supported")?A.transition(g.transition+" out",g.duration,function(){c.reset(),b()}):A.stop().fadeOut(g.duration,g.easing,function(){c.reset(),b()}),a.proxy(g.onHide,C)()}},get:{startEvent:function(){return"hover"==g.on?"mouseenter":"focus"==g.on?"focus":void 0},endEvent:function(){return"hover"==g.on?"mouseleave":"focus"==g.on?"blur":void 0},offstagePosition:function(){var d={top:a(b).scrollTop(),bottom:a(b).scrollTop()+a(b).height(),left:0,right:a(b).width()},e={width:A.width(),height:A.outerHeight(),position:A.offset()},f={},g=[];return e.position&&(f={top:e.position.topd.bottom,right:e.position.left+e.width>d.right,left:e.position.left0?g.join(" "):!1},nextPosition:function(a){switch(a){case"top left":a="bottom left";break;case"bottom left":a="top right";break;case"top right":a="bottom right";break;case"bottom right":a="top center";break;case"top center":a="bottom center";break;case"bottom center":a="right center";break;case"right center":a="left center";break;case"left center":a="top center"}return a}},set:{position:function(d,e){var f,h,i=(a(b).width(),a(b).height(),x.outerWidth()),j=x.outerHeight(),k=A.width(),l=A.outerHeight(),m=z.outerWidth(),n=z.outerHeight(),o=g.distanceAway,s=g.inline?x.position():x.offset();switch(d=d||v.data(r.position)||g.position,e=e||v.data(r.offset)||g.offset,g.inline&&("left center"==d||"right center"==d?(e+=parseInt(b.getComputedStyle(C).getPropertyValue("margin-top"),10),o+=-parseInt(b.getComputedStyle(C).getPropertyValue("margin-left"),10)):(e+=parseInt(b.getComputedStyle(C).getPropertyValue("margin-left"),10),o+=parseInt(b.getComputedStyle(C).getPropertyValue("margin-top"),10))),c.debug("Calculating offset for position",d),d){case"top left":f={bottom:n-s.top+o,right:m-s.left-e,top:"auto",left:"auto"};break;case"top center":f={bottom:n-s.top+o,left:s.left+i/2-k/2+e,top:"auto",right:"auto"};break;case"top right":f={top:"auto",bottom:n-s.top+o,left:s.left+i+e,right:"auto"};break;case"left center":f={top:s.top+j/2-l/2+e,right:m-s.left+o,left:"auto",bottom:"auto"};break;case"right center":f={top:s.top+j/2-l/2+e,left:s.left+i+o,bottom:"auto",right:"auto"};break;case"bottom left":f={top:s.top+j+o,right:m-s.left-e,left:"auto",bottom:"auto"};break;case"bottom center":f={top:s.top+j+o,left:s.left+i/2-k/2+e,bottom:"auto",right:"auto"};break;case"bottom right":f={top:s.top+j+o,left:s.left+i+e,bottom:"auto",right:"auto"}}return A.css(f).removeClass(p.position).addClass(d).addClass(p.loading),h=c.get.offstagePosition(),h?(c.debug("Element is outside boundaries",h),B0&&(console.groupCollapsed(b),console.table?console.table(k):a.each(k,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),k=[]}},invoke:function(b,c,e){var g,h,i,j=D;return c=c||n,e=C||e,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(e,c):h!==d&&(i=h),a.isArray(f)?f.push(i):f!==d?f=[f,i]:i!==d&&(f=i),h}},m?(D===d&&c.initialize(),c.invoke(l)):(D!==d&&c.destroy(),c.initialize())}),f!==d?f:this},a.fn.popup.settings={name:"Popup",debug:!1,verbose:!0,performance:!0,namespace:"popup",onCreate:function(){},onRemove:function(){},onShow:function(){},onHide:function(){},variation:"",content:!1,html:!1,title:!1,on:"hover",target:!1,closable:!0,context:"body",position:"top center",delay:150,inline:!1,preserve:!1,duration:250,easing:"easeOutQuad",transition:"scale",distanceAway:0,offset:0,maxSearchDepth:10,error:{content:"Your popup has no content specified",method:"The method you called is not defined.",recursion:"Popup attempted to reposition element to fit, but could not find an adequate position."},metadata:{content:"content",html:"html",offset:"offset",position:"position",title:"title",variation:"variation"},className:{animating:"animating",loading:"loading",popup:"ui popup",position:"top left center bottom right",visible:"visible"},selector:{popup:".ui.popup"},template:function(a){var b="";return typeof a!==d&&(typeof a.title!==d&&a.title&&(b+='
'+a.title+"
"),typeof a.content!==d&&a.content&&(b+='
'+a.content+"
")),b}},a.extend(a.easing,{easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c}})}(jQuery,window,document),function(a,b,c,d){a.fn.rating=function(b){var c,e=a(this),f=e.selector||"",g=(new Date).getTime(),h=[],i=arguments[0],j="string"==typeof i,k=[].slice.call(arguments,1);return e.each(function(){var l,m=a.isPlainObject(b)?a.extend(!0,{},a.fn.rating.settings,b):a.extend({},a.fn.rating.settings),n=m.namespace,o=m.className,p=m.metadata,q=m.selector,r=(m.error,"."+n),s="module-"+n,t=this,u=a(this).data(s),v=a(this),w=v.find(q.icon);l={initialize:function(){l.verbose("Initializing rating module",m),m.interactive?l.enable():l.disable(),m.initialRating&&(l.debug("Setting initial rating"),l.setRating(m.initialRating)),v.data(p.rating)&&(l.debug("Rating found in metadata"),l.setRating(v.data(p.rating))),l.instantiate()},instantiate:function(){l.verbose("Instantiating module",m),u=l,v.data(s,l)},destroy:function(){l.verbose("Destroying previous instance",u),v.removeData(s),w.off(r)},event:{mouseenter:function(){var b=a(this);b.nextAll().removeClass(o.hover),v.addClass(o.hover),b.addClass(o.hover).prevAll().addClass(o.hover)},mouseleave:function(){v.removeClass(o.hover),w.removeClass(o.hover)},click:function(){var b=a(this),c=l.getRating(),d=w.index(b)+1;m.clearable&&c==d?l.clearRating():l.setRating(d)}},clearRating:function(){l.debug("Clearing current rating"),l.setRating(0)},getRating:function(){var a=w.filter("."+o.active).size();return l.verbose("Current rating retrieved",a),a},enable:function(){l.debug("Setting rating to interactive mode"),w.on("mouseenter"+r,l.event.mouseenter).on("mouseleave"+r,l.event.mouseleave).on("click"+r,l.event.click),v.removeClass(o.disabled)},disable:function(){l.debug("Setting rating to read-only mode"),w.off(r),v.addClass(o.disabled)},setRating:function(b){var c=b-1>=0?b-1:0,d=w.eq(c);v.removeClass(o.hover),w.removeClass(o.hover).removeClass(o.active),b>0&&(l.verbose("Setting current rating to",b),d.addClass(o.active).prevAll().addClass(o.active)),a.proxy(m.onRate,t)(b)},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,m,b);else{if(c===d)return m[b];m[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,l,b);else{if(c===d)return l[b];l[b]=c}},debug:function(){m.debug&&(m.performance?l.performance.log(arguments):(l.debug=Function.prototype.bind.call(console.info,console,m.name+":"),l.debug.apply(console,arguments)))},verbose:function(){m.verbose&&m.debug&&(m.performance?l.performance.log(arguments):(l.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),l.verbose.apply(console,arguments)))},error:function(){l.error=Function.prototype.bind.call(console.error,console,m.name+":"),l.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;m.performance&&(b=(new Date).getTime(),d=g||b,c=b-d,g=b,h.push({Element:t,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(l.performance.timer),l.performance.timer=setTimeout(l.performance.display,100)},display:function(){var b=m.name+":",c=0;g=!1,clearTimeout(l.performance.timer),a.each(h,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",f&&(b+=" '"+f+"'"),e.size()>1&&(b+=" ("+e.size()+")"),(console.group!==d||console.table!==d)&&h.length>0&&(console.groupCollapsed(b),console.table?console.table(h):a.each(h,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),h=[]}},invoke:function(b,e,f){var g,h,i,j=u;return e=e||k,f=t||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,e):h!==d&&(i=h),a.isArray(c)?c.push(i):c!==d?c=[c,i]:i!==d&&(c=i),h}},j?(u===d&&l.initialize(),l.invoke(i)):(u!==d&&l.destroy(),l.initialize())}),c!==d?c:this},a.fn.rating.settings={name:"Rating",namespace:"rating",verbose:!0,debug:!1,performance:!0,initialRating:0,interactive:!0,clearable:!1,onRate:function(){},error:{method:"The method you called is not defined"},metadata:{rating:"rating"},className:{active:"active",disabled:"disabled",hover:"hover",loading:"loading"},selector:{icon:".icon"}}}(jQuery,window,document),function(a,b,c,d){a.fn.search=function(c,e){var f,g=a(this),h=g.selector||"",i=(new Date).getTime(),j=[],k=arguments[0],l="string"==typeof k,m=[].slice.call(arguments,1);return a(this).each(function(){var n,o=a.extend(!0,{},a.fn.search.settings,e),p=o.className,q=o.selector,r=o.error,s=o.namespace,t="."+s,u=s+"-module",v=a(this),w=v.find(q.prompt),x=v.find(q.searchButton),y=v.find(q.results),z=(v.find(q.result),v.find(q.category),this),A=v.data(u);n={initialize:function(){n.verbose("Initializing module");var a=w[0],b=a.oninput!==d?"input":a.onpropertychange!==d?"propertychange":"keyup";w.on("focus"+t,n.event.focus).on("blur"+t,n.event.blur).on("keydown"+t,n.handleKeyboard),o.automatic&&w.on(b+t,n.search.throttle),x.on("click"+t,n.search.query),y.on("click"+t,q.result,n.results.select),n.instantiate()},instantiate:function(){n.verbose("Storing instance of module",n),A=n,v.data(u,n)},destroy:function(){n.verbose("Destroying instance"),v.removeData(u)},event:{focus:function(){v.addClass(p.focus),n.results.show()},blur:function(){n.search.cancel(),v.removeClass(p.focus),n.results.hide()}},handleKeyboard:function(b){var c,d=v.find(q.result),e=v.find(q.category),f=b.which,g={backspace:8,enter:13,escape:27,upArrow:38,downArrow:40},h=p.active,i=d.index(d.filter("."+h)),j=d.size();if(f==g.escape&&(n.verbose("Escape key pressed, blurring search field"),w.trigger("blur")),y.filter(":visible").size()>0)if(f==g.enter){if(n.verbose("Enter key pressed, selecting active result"),d.filter("."+h).size()>0)return a.proxy(n.results.select,d.filter("."+h))(),b.preventDefault(),!1}else f==g.upArrow?(n.verbose("Up key pressed, changing active result"),c=0>i-1?i:i-1,e.removeClass(h),d.removeClass(h).eq(c).addClass(h).closest(e).addClass(h),b.preventDefault()):f==g.downArrow&&(n.verbose("Down key pressed, changing active result"),c=i+1>=j?i:i+1,e.removeClass(h),d.removeClass(h).eq(c).addClass(h).closest(e).addClass(h),b.preventDefault());else f==g.enter&&(n.verbose("Enter key pressed, executing query"),n.search.query(),x.addClass(p.down),w.one("keyup",function(){x.removeClass(p.down)}))},search:{cancel:function(){var a=v.data("xhr")||!1;a&&"resolved"!=a.state()&&(n.debug("Cancelling last search"),a.abort())},throttle:function(){var a=w.val(),b=a.length;clearTimeout(n.timer),b>=o.minCharacters?n.timer=setTimeout(n.search.query,o.searchThrottle):n.results.hide()},query:function(){var b=w.val(),d=n.search.cache.read(b);d?(n.debug("Reading result for '"+b+"' from cache"),n.results.add(d)):(n.debug("Querying for '"+b+"'"),"object"==typeof c?n.search.local(b):n.search.remote(b),a.proxy(o.onSearchQuery,v)(b))},local:function(b){var d,e=[],f=[],g=a.isArray(o.searchFields)?o.searchFields:[o.searchFields],h=new RegExp("(?:s|^)"+b,"i"),i=new RegExp(b,"i");v.addClass(p.loading),a.each(g,function(b,d){a.each(c,function(b,c){"string"==typeof c[d]&&-1==a.inArray(c,e)&&-1==a.inArray(c,f)&&(h.test(c[d])?e.push(c):i.test(c[d])&&f.push(c))})}),d=n.results.generate({results:a.merge(e,f)}),v.removeClass(p.loading),n.search.cache.write(b,d),n.results.add(d)},remote:function(b){var d,e={stateContext:v,url:c,urlData:{query:b},success:function(a){d=n.results.generate(a),n.search.cache.write(b,d),n.results.add(d)},failure:n.error};n.search.cancel(),n.debug("Executing search"),a.extend(!0,e,o.apiSettings),a.api(e)},cache:{read:function(a){var b=v.data("cache");return o.cache&&"object"==typeof b&&b[a]!==d?b[a]:!1},write:function(a,b){var c=v.data("cache")!==d?v.data("cache"):{};c[a]=b,v.data("cache",c)}}},results:{generate:function(b){n.debug("Generating html from response",b);var c=o.templates[o.type],d="";return a.isPlainObject(b.results)&&!a.isEmptyObject(b.results)||a.isArray(b.results)&&b.results.length>0?(o.maxResults>0&&(b.results=a.makeArray(b.results).slice(0,o.maxResults)),b.results.length>0&&(a.isFunction(c)?d=c(b):n.error(r.noTemplate,!1))):d=n.message(r.noResults,"empty"),a.proxy(o.onResults,v)(b),d},add:function(b){("default"==o.onResultsAdd||"default"==a.proxy(o.onResultsAdd,y)(b))&&y.html(b),n.results.show()},show:function(){0===y.filter(":visible").size()&&w.filter(":focus").size()>0&&""!==y.html()&&(y.stop().fadeIn(200),a.proxy(o.onResultsOpen,y)())},hide:function(){y.filter(":visible").size()>0&&(y.stop().fadeOut(200),a.proxy(o.onResultsClose,y)())},select:function(c){n.debug("Search result selected");var d=a(this),e=d.find(".title"),f=e.html();if("default"==o.onSelect||"default"==a.proxy(o.onSelect,this)(c)){var g=d.find("a[href]").eq(0),h=g.attr("href")||!1,i=g.attr("target")||!1;n.results.hide(),w.val(f),h&&("_blank"==i||c.ctrlKey?b.open(h):b.location.href=h)}}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,o,b);else{if(c===d)return o[b];o[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,n,b);else{if(c===d)return n[b];n[b]=c}},debug:function(){o.debug&&(o.performance?n.performance.log(arguments):(n.debug=Function.prototype.bind.call(console.info,console,o.name+":"),n.debug.apply(console,arguments)))},verbose:function(){o.verbose&&o.debug&&(o.performance?n.performance.log(arguments):(n.verbose=Function.prototype.bind.call(console.info,console,o.name+":"),n.verbose.apply(console,arguments)))},error:function(){n.error=Function.prototype.bind.call(console.error,console,o.name+":"),n.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;o.performance&&(b=(new Date).getTime(),d=i||b,c=b-d,i=b,j.push({Element:z,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(n.performance.timer),n.performance.timer=setTimeout(n.performance.display,100)},display:function(){var b=o.name+":",c=0;i=!1,clearTimeout(n.performance.timer),a.each(j,function(a,b){c+=b["Execution Time"] +}),b+=" "+c+"ms",h&&(b+=" '"+h+"'"),g.size()>1&&(b+=" ("+g.size()+")"),(console.group!==d||console.table!==d)&&j.length>0&&(console.groupCollapsed(b),console.table?console.table(j):a.each(j,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),j=[]}},invoke:function(b,c,e){var g,h,i,j=A;return c=c||m,e=z||e,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(e,c):h!==d&&(i=h),a.isArray(f)?f.push(i):f!==d?f=[f,i]:i!==d&&(f=i),h}},l?(A===d&&n.initialize(),n.invoke(k)):(A!==d&&n.destroy(),n.initialize())}),f!==d?f:this},a.fn.search.settings={name:"Search Module",namespace:"search",debug:!1,verbose:!0,performance:!0,onSelect:"default",onResultsAdd:"default",onSearchQuery:function(){},onResults:function(){},onResultsOpen:function(){},onResultsClose:function(){},automatic:"true",type:"simple",minCharacters:3,searchThrottle:300,maxResults:7,cache:!0,searchFields:["title","description"],apiSettings:{},className:{active:"active",down:"down",focus:"focus",empty:"empty",loading:"loading"},error:{noResults:"Your search returned no results",logging:"Error in debug logging, exiting.",noTemplate:"A valid template name was not specified.",serverError:"There was an issue with querying the server.",method:"The method you called is not defined."},selector:{prompt:".prompt",searchButton:".search.button",results:".results",category:".category",result:".result"},templates:{message:function(a,b){var c="";return a!==d&&b!==d&&(c+='
',c+="empty"==b?'
No Results
'+a+'
':'
'+a+"
",c+="
"),c},categories:function(b){var c="";return b.results!==d?(a.each(b.results,function(b,e){e.results!==d&&e.results.length>0&&(c+='
'+e.name+"
",a.each(e.results,function(a,b){c+='
',c+='',b.image!==d&&(c+='
'),c+='
',b.price!==d&&(c+='
'+b.price+"
"),b.title!==d&&(c+='
'+b.title+"
"),b.description!==d&&(c+='
'+b.description+"
"),c+="
"}),c+="
")}),b.resultPage&&(c+=''+b.resultPage.text+""),c):!1},simple:function(b){var c="";return b.results!==d?(a.each(b.results,function(a,b){c+='',b.image!==d&&(c+='
'),c+='
',b.price!==d&&(c+='
'+b.price+"
"),b.title!==d&&(c+='
'+b.title+"
"),b.description!==d&&(c+='
'+b.description+"
"),c+="
"}),b.resultPage&&(c+=''+b.resultPage.text+""),c):!1}}}}(jQuery,window,document),function(a,b,c,d){a.fn.shape=function(b){var e,f=a(this),g=a("body"),h=(new Date).getTime(),i=[],j=arguments[0],k="string"==typeof j,l=[].slice.call(arguments,1);return f.each(function(){var m,n,o,p=f.selector||"",q=a.extend(!0,{},a.fn.shape.settings,b),r=q.namespace,s=q.selector,t=q.error,u=q.className,v="."+r,w="module-"+r,x=a(this),y=x.find(s.sides),z=x.find(s.side),A=!1,B=this,C=x.data(w);o={initialize:function(){o.verbose("Initializing module for",B),o.set.defaultSide(),o.instantiate()},instantiate:function(){o.verbose("Storing instance of module",o),C=o,x.data(w,C)},destroy:function(){o.verbose("Destroying previous module for",B),x.removeData(w).off(v)},refresh:function(){o.verbose("Refreshing selector cache for",B),x=a(B),y=a(this).find(s.shape),z=a(this).find(s.side)},repaint:function(){o.verbose("Forcing repaint event");{var a=y.get(0)||c.createElement("div");a.offsetWidth}},animate:function(b,c){o.verbose("Animating box with properties",b),c=c||function(a){o.verbose("Executing animation callback"),a!==d&&a.stopPropagation(),o.reset(),o.set.active()},a.proxy(q.beforeChange,n[0])(),o.get.transitionEvent()?(o.verbose("Starting CSS animation"),x.addClass(u.animating),o.repaint(),x.addClass(u.animating),m.addClass(u.hidden),y.css(b).one(o.get.transitionEvent(),c),o.set.duration(q.duration)):c()},queue:function(a){o.debug("Queueing animation of",a),y.one(o.get.transitionEvent(),function(){o.debug("Executing queued animation"),setTimeout(function(){x.shape(a)},0)})},reset:function(){o.verbose("Animating states reset"),x.removeClass(u.animating).attr("style","").removeAttr("style"),y.attr("style","").removeAttr("style"),z.attr("style","").removeAttr("style").removeClass(u.hidden),n.removeClass(u.animating).attr("style","").removeAttr("style")},is:{animating:function(){return x.hasClass(u.animating)}},set:{defaultSide:function(){m=x.find("."+q.className.active),n=m.next(s.side).size()>0?m.next(s.side):x.find(s.side).first(),A=!1,o.verbose("Active side set to",m),o.verbose("Next side set to",n)},duration:function(a){a=a||q.duration,a="number"==typeof a?a+"ms":a,o.verbose("Setting animation duration",a),y.add(z).css({"-webkit-transition-duration":a,"-moz-transition-duration":a,"-ms-transition-duration":a,"-o-transition-duration":a,"transition-duration":a})},stageSize:function(){var a=x.clone().addClass(u.loading),b=a.find("."+q.className.active),c=A?a.find(A):b.next(s.side).size()>0?b.next(s.side):a.find(s.side).first(),d={};b.removeClass(u.active),c.addClass(u.active),a.prependTo(g),d={width:c.outerWidth(),height:c.outerHeight()},a.remove(),x.css(d),o.verbose("Resizing stage to fit new content",d)},nextSide:function(a){A=a,n=x.find(a),0===n.size()&&o.error(t.side),o.verbose("Next side manually set to",n)},active:function(){o.verbose("Setting new side to active",n),z.removeClass(u.active),n.addClass(u.active),a.proxy(q.onChange,n[0])(),o.set.defaultSide()}},flip:{up:function(){o.debug("Flipping up",n),o.is.animating()?o.queue("flip up"):(o.set.stageSize(),o.stage.above(),o.animate(o.get.transform.up()))},down:function(){o.debug("Flipping down",n),o.is.animating()?o.queue("flip down"):(o.set.stageSize(),o.stage.below(),o.animate(o.get.transform.down()))},left:function(){o.debug("Flipping left",n),o.is.animating()?o.queue("flip left"):(o.set.stageSize(),o.stage.left(),o.animate(o.get.transform.left()))},right:function(){o.debug("Flipping right",n),o.is.animating()?o.queue("flip right"):(o.set.stageSize(),o.stage.right(),o.animate(o.get.transform.right()))},over:function(){o.debug("Flipping over",n),o.is.animating()?o.queue("flip over"):(o.set.stageSize(),o.stage.behind(),o.animate(o.get.transform.over()))},back:function(){o.debug("Flipping back",n),o.is.animating()?o.queue("flip back"):(o.set.stageSize(),o.stage.behind(),o.animate(o.get.transform.back()))}},get:{transform:{up:function(){var a={y:-((m.outerHeight()-n.outerHeight())/2),z:-(m.outerHeight()/2)};return{transform:"translateY("+a.y+"px) translateZ("+a.z+"px) rotateX(-90deg)"}},down:function(){var a={y:-((m.outerHeight()-n.outerHeight())/2),z:-(m.outerHeight()/2)};return{transform:"translateY("+a.y+"px) translateZ("+a.z+"px) rotateX(90deg)"}},left:function(){var a={x:-((m.outerWidth()-n.outerWidth())/2),z:-(m.outerWidth()/2)};return{transform:"translateX("+a.x+"px) translateZ("+a.z+"px) rotateY(90deg)"}},right:function(){var a={x:-((m.outerWidth()-n.outerWidth())/2),z:-(m.outerWidth()/2)};return{transform:"translateX("+a.x+"px) translateZ("+a.z+"px) rotateY(-90deg)"}},over:function(){var a={x:-((m.outerWidth()-n.outerWidth())/2)};return{transform:"translateX("+a.x+"px) rotateY(180deg)"}},back:function(){var a={x:-((m.outerWidth()-n.outerWidth())/2)};return{transform:"translateX("+a.x+"px) rotateY(-180deg)"}}},transitionEvent:function(){var a,b=c.createElement("element"),e={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(a in e)if(b.style[a]!==d)return e[a]},nextSide:function(){return m.next(s.side).size()>0?m.next(s.side):x.find(s.side).first()}},stage:{above:function(){var a={origin:(m.outerHeight()-n.outerHeight())/2,depth:{active:n.outerHeight()/2,next:m.outerHeight()/2}};o.verbose("Setting the initial animation position as above",n,a),m.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),n.addClass(u.animating).css({display:"block",top:a.origin+"px",transform:"rotateX(90deg) translateZ("+a.depth.next+"px)"})},below:function(){var a={origin:(m.outerHeight()-n.outerHeight())/2,depth:{active:n.outerHeight()/2,next:m.outerHeight()/2}};o.verbose("Setting the initial animation position as below",n,a),m.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),n.addClass(u.animating).css({display:"block",top:a.origin+"px",transform:"rotateX(-90deg) translateZ("+a.depth.next+"px)"})},left:function(){var a={origin:(m.outerWidth()-n.outerWidth())/2,depth:{active:n.outerWidth()/2,next:m.outerWidth()/2}};o.verbose("Setting the initial animation position as left",n,a),m.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),n.addClass(u.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(-90deg) translateZ("+a.depth.next+"px)"})},right:function(){var a={origin:(m.outerWidth()-n.outerWidth())/2,depth:{active:n.outerWidth()/2,next:m.outerWidth()/2}};o.verbose("Setting the initial animation position as left",n,a),m.css({transform:"rotateY(0deg) translateZ("+a.depth.active+"px)"}),n.addClass(u.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(90deg) translateZ("+a.depth.next+"px)"})},behind:function(){var a={origin:(m.outerWidth()-n.outerWidth())/2,depth:{active:n.outerWidth()/2,next:m.outerWidth()/2}};o.verbose("Setting the initial animation position as behind",n,a),m.css({transform:"rotateY(0deg)"}),n.addClass(u.animating).css({display:"block",left:a.origin+"px",transform:"rotateY(-180deg)"})}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,q,b);else{if(c===d)return q[b];q[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,o,b);else{if(c===d)return o[b];o[b]=c}},debug:function(){q.debug&&(q.performance?o.performance.log(arguments):(o.debug=Function.prototype.bind.call(console.info,console,q.name+":"),o.debug.apply(console,arguments)))},verbose:function(){q.verbose&&q.debug&&(q.performance?o.performance.log(arguments):(o.verbose=Function.prototype.bind.call(console.info,console,q.name+":"),o.verbose.apply(console,arguments)))},error:function(){o.error=Function.prototype.bind.call(console.error,console,q.name+":"),o.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;q.performance&&(b=(new Date).getTime(),d=h||b,c=b-d,h=b,i.push({Element:B,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(o.performance.timer),o.performance.timer=setTimeout(o.performance.display,100)},display:function(){var b=q.name+":",c=0;h=!1,clearTimeout(o.performance.timer),a.each(i,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",p&&(b+=" '"+p+"'"),f.size()>1&&(b+=" ("+f.size()+")"),(console.group!==d||console.table!==d)&&i.length>0&&(console.groupCollapsed(b),console.table?console.table(i):a.each(i,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),i=[]}},invoke:function(b,c,f){var g,h,i,j=C;return c=c||l,f=B||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,c):h!==d&&(i=h),a.isArray(e)?e.push(i):e!==d?e=[e,i]:i!==d&&(e=i),h}},k?(C===d&&o.initialize(),o.invoke(j)):(C!==d&&o.destroy(),o.initialize())}),e!==d?e:this},a.fn.shape.settings={name:"Shape",debug:!1,verbose:!0,performance:!0,namespace:"shape",beforeChange:function(){},onChange:function(){},duration:700,error:{side:"You tried to switch to a side that does not exist.",method:"The method you called is not defined"},className:{animating:"animating",hidden:"hidden",loading:"loading",active:"active"},selector:{sides:".sides",side:".side"}}}(jQuery,window,document),function(a,b,c,d){a.fn.sidebar=function(b){var e,f=a(this),g=a("body"),h=a("head"),i=f.selector||"",j=(new Date).getTime(),k=[],l=arguments[0],m="string"==typeof l,n=[].slice.call(arguments,1);return f.each(function(){var o,p=a.isPlainObject(b)?a.extend(!0,{},a.fn.sidebar.settings,b):a.extend({},a.fn.sidebar.settings),q=p.selector,r=p.className,s=p.namespace,t=p.error,u="."+s,v="module-"+s,w=a(this),x=a("style[title="+s+"]"),y=this,z=w.data(v);o={initialize:function(){o.debug("Initializing sidebar",w),o.instantiate()},instantiate:function(){o.verbose("Storing instance of module",o),z=o,w.data(v,o)},destroy:function(){o.verbose("Destroying previous module for",w),w.off(u).removeData(v)},refresh:function(){o.verbose("Refreshing selector cache"),x=a("style[title="+s+"]")},attachEvents:function(b,c){var d=a(b);c=a.isFunction(o[c])?o[c]:o.toggle,d.size()>0?(o.debug("Attaching sidebar events to element",b,c),d.off(u).on("click"+u,c)):o.error(t.notFound)},show:function(b){b=a.isFunction(b)?b:function(){},o.debug("Showing sidebar",b),o.is.closed()?(p.overlay||(p.exclusive&&o.hideAll(),o.pushPage()),o.set.active(),b(),a.proxy(p.onChange,y)(),a.proxy(p.onShow,y)()):o.debug("Sidebar is already visible")},hide:function(b){b=a.isFunction(b)?b:function(){},o.debug("Hiding sidebar",b),o.is.open()&&(p.overlay||(o.pullPage(),o.remove.pushed()),o.remove.active(),b(),a.proxy(p.onChange,y)(),a.proxy(p.onHide,y)())},hideAll:function(){a(q.sidebar).filter(":visible").sidebar("hide")},toggle:function(){o.is.closed()?o.show():o.hide()},pushPage:function(){var a=o.get.direction(),b=o.is.vertical()?w.outerHeight():w.outerWidth();p.useCSS?(o.debug("Using CSS to animate body"),o.add.bodyCSS(a,b),o.set.pushed()):o.animatePage(a,b,o.set.pushed)},pullPage:function(){var a=o.get.direction();p.useCSS?(o.debug("Resetting body position css"),o.remove.bodyCSS()):(o.debug("Resetting body position using javascript"),o.animatePage(a,0)),o.remove.pushed()},animatePage:function(a,b){var c={};c["padding-"+a]=b,o.debug("Using javascript to animate body",c),g.animate(c,p.duration,o.set.pushed)},add:{bodyCSS:function(a,b){var c;a!==r.bottom&&(c='"),h.append(c),o.debug("Adding body css to head",x)}},remove:{bodyCSS:function(){o.debug("Removing body css styles",x),o.refresh(),x.remove()},active:function(){w.removeClass(r.active)},pushed:function(){o.verbose("Removing body push state",o.get.direction()),g.removeClass(r[o.get.direction()]).removeClass(r.pushed)}},set:{active:function(){w.addClass(r.active)},pushed:function(){o.verbose("Adding body push state",o.get.direction()),g.addClass(r[o.get.direction()]).addClass(r.pushed)}},get:{direction:function(){return w.hasClass(r.top)?r.top:w.hasClass(r.right)?r.right:w.hasClass(r.bottom)?r.bottom:r.left},transitionEvent:function(){var a,b=c.createElement("element"),e={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(a in e)if(b.style[a]!==d)return e[a]}},is:{open:function(){return w.is(":animated")||w.hasClass(r.active)},closed:function(){return!o.is.open()},vertical:function(){return w.hasClass(r.top)}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,p,b);else{if(c===d)return p[b];p[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,o,b);else{if(c===d)return o[b];o[b]=c}},debug:function(){p.debug&&(p.performance?o.performance.log(arguments):(o.debug=Function.prototype.bind.call(console.info,console,p.name+":"),o.debug.apply(console,arguments)))},verbose:function(){p.verbose&&p.debug&&(p.performance?o.performance.log(arguments):(o.verbose=Function.prototype.bind.call(console.info,console,p.name+":"),o.verbose.apply(console,arguments)))},error:function(){o.error=Function.prototype.bind.call(console.error,console,p.name+":"),o.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;p.performance&&(b=(new Date).getTime(),d=j||b,c=b-d,j=b,k.push({Element:y,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(o.performance.timer),o.performance.timer=setTimeout(o.performance.display,100)},display:function(){var b=p.name+":",c=0;j=!1,clearTimeout(o.performance.timer),a.each(k,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",i&&(b+=" '"+i+"'"),f.size()>1&&(b+=" ("+f.size()+")"),(console.group!==d||console.table!==d)&&k.length>0&&(console.groupCollapsed(b),console.table?console.table(k):a.each(k,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),k=[]}},invoke:function(b,c,f){var g,h,i,j=z;return c=c||n,f=y||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,c):h!==d&&(i=h),a.isArray(e)?e.push(i):e!==d?e=[e,i]:i!==d&&(e=i),h}},m?(z===d&&o.initialize(),o.invoke(l)):(z!==d&&o.destroy(),o.initialize())}),e!==d?e:this},a.fn.sidebar.settings={name:"Sidebar",namespace:"sidebar",debug:!1,verbose:!0,performance:!0,useCSS:!0,exclusive:!0,overlay:!1,duration:300,onChange:function(){},onShow:function(){},onHide:function(){},className:{active:"active",pushed:"pushed",top:"top",left:"left",right:"right",bottom:"bottom"},selector:{sidebar:".ui.sidebar"},error:{method:"The method you called is not defined.",notFound:"There were no elements that matched the specified selector"}}}(jQuery,window,document),function(a,b,c,d){a.fn.tab=function(c){var e,f,g,h,i,j=a.extend(!0,{},a.fn.tab.settings,c),k=a(this),l=a(j.context).find(j.selector.tabs),m=k.selector||"",n={},o=!0,p=0,q=this,r=(new Date).getTime(),s=[],t=j.className,u=j.metadata,v=j.error,w="."+j.namespace,x="module-"+j.namespace,y=k.data(x),z=arguments[0],A=y!==d&&"string"==typeof z,B=[].slice.call(arguments,1);return h={initialize:function(){if(h.debug("Initializing Tabs",k),j.auto&&(h.verbose("Setting up automatic tab retrieval from server"),j.apiSettings={url:j.path+"/{$tab}"}),j.history){if(h.debug("Initializing page state"),a.address===d)return h.error(v.state),!1;if("hash"==j.historyType&&h.debug("Using hash state change to manage state"),"html5"==j.historyType){if(h.debug("Using HTML5 to manage state"),j.path===!1)return h.error(v.path),!1;a.address.history(!0).state(j.path)}a.address.unbind("change").bind("change",h.event.history.change)}a.isWindow(q)||(h.debug("Attaching tab activation events to element",k),k.on("click"+w,h.event.click)),h.instantiate()},instantiate:function(){h.verbose("Storing instance of module",h),k.data(x,h)},destroy:function(){h.debug("Destroying tabs",k),k.removeData(x).off(w)},event:{click:function(b){var c=a(this).data(u.tab);c!==d?(j.history?(h.verbose("Updating page state",b),a.address.value(c)):(h.verbose("Changing tab without state management",b),h.changeTab(c)),b.preventDefault()):h.debug("No tab specified")},history:{change:function(b){var c=b.pathNames.join("/")||h.get.initialPath(),e=j.templates.determineTitle(c)||!1;h.debug("History change event",c,b),g=b,c!==d&&h.changeTab(c),e&&a.address.title(e)}}},refresh:function(){e&&(h.debug("Refreshing tab",e),h.changeTab(e))},cache:{read:function(a){return a!==d?n[a]:!1},add:function(a,b){a=a||e,h.debug("Adding cached content for",a),n[a]=b},remove:function(a){a=a||e,h.debug("Removing cached content for",a),delete n[a]}},set:{state:function(b){a.address.value(b)}},changeTab:function(c){var d=b.history&&b.history.pushState,i=d&&j.ignoreFirstLoad&&o,k=j.auto||a.isPlainObject(j.apiSettings),l=k&&!i?h.utilities.pathToArray(c):h.get.defaultPathArray(c);c=h.utilities.arrayToPath(l),h.deactivate.all(),a.each(l,function(b,d){var m,n,p,q=l.slice(0,b+1),r=h.utilities.arrayToPath(q),s=h.is.tab(r),t=b+1==l.length,u=h.get.tabElement(r);return h.verbose("Looking for tab",d),s?(h.verbose("Tab was found",d),e=r,f=h.utilities.filterArray(l,q),t?p=!0:(m=l.slice(0,b+2),n=h.utilities.arrayToPath(m),p=!h.is.tab(n),p&&h.verbose("Tab parameters found",m)),p&&k?(i?(h.debug("Ignoring remote content on first tab load",r),o=!1,h.cache.add(c,u.html()),h.activate.all(r),a.proxy(j.onTabInit,u)(r,f,g),a.proxy(j.onTabLoad,u)(r,f,g)):(h.activate.navigation(r),h.content.fetch(r,c)),!1):(h.debug("Opened local tab",r),h.activate.all(r),h.cache.read(r)||(h.cache.add(r,!0),h.debug("First time tab loaded calling tab init"),a.proxy(j.onTabInit,u)(r,f,g)),a.proxy(j.onTabLoad,u)(r,f,g),void 0)):(h.error(v.missingTab,d),!1)})},content:{fetch:function(b,c){var i,k,l=h.get.tabElement(b),m={dataType:"html",stateContext:l,success:function(d){h.cache.add(c,d),h.content.update(b,d),b==e?(h.debug("Content loaded",b),h.activate.tab(b)):h.debug("Content loaded in background",b),a.proxy(j.onTabInit,l)(b,f,g),a.proxy(j.onTabLoad,l)(b,f,g)},urlData:{tab:c}},n=l.data(u.promise)||!1,o=n&&"pending"===n.state();c=c||b,k=h.cache.read(c),j.cache&&k?(h.debug("Showing existing content",c),h.content.update(b,k),h.activate.tab(b),a.proxy(j.onTabLoad,l)(b,f,g)):o?(h.debug("Content is already loading",c),l.addClass(t.loading)):a.api!==d?(console.log(j.apiSettings),i=a.extend(!0,{headers:{"X-Remote":!0}},j.apiSettings,m),h.debug("Retrieving remote content",c,i),a.api(i)):h.error(v.api)},update:function(a,b){h.debug("Updating html for",a);var c=h.get.tabElement(a);c.html(b)}},activate:{all:function(a){h.activate.tab(a),h.activate.navigation(a)},tab:function(a){var b=h.get.tabElement(a);h.verbose("Showing tab content for",b),b.addClass(t.active)},navigation:function(a){var b=h.get.navElement(a);h.verbose("Activating tab navigation for",b,a),b.addClass(t.active)}},deactivate:{all:function(){h.deactivate.navigation(),h.deactivate.tabs()},navigation:function(){k.removeClass(t.active)},tabs:function(){l.removeClass(t.active+" "+t.loading)}},is:{tab:function(a){return a!==d?h.get.tabElement(a).size()>0:!1}},get:{initialPath:function(){return k.eq(0).data(u.tab)||l.eq(0).data(u.tab)},path:function(){return a.address.value()},defaultPathArray:function(a){return h.utilities.pathToArray(h.get.defaultPath(a))},defaultPath:function(a){var b=k.filter("[data-"+u.tab+'^="'+a+'/"]').eq(0),c=b.data(u.tab)||!1;if(c){if(h.debug("Found default tab",c),p0?b:c},tab:function(){return e}},utilities:{filterArray:function(b,c){return a.grep(b,function(b){return-1==a.inArray(b,c)})},last:function(b){return a.isArray(b)?b[b.length-1]:!1},pathToArray:function(a){return a===d&&(a=e),"string"==typeof a?a.split("/"):[a]},arrayToPath:function(b){return a.isArray(b)?b.join("/"):!1}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,j,b);else{if(c===d)return j[b];j[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,h,b);else{if(c===d)return h[b];h[b]=c}},debug:function(){j.debug&&(j.performance?h.performance.log(arguments):(h.debug=Function.prototype.bind.call(console.info,console,j.name+":"),h.debug.apply(console,arguments)))},verbose:function(){j.verbose&&j.debug&&(j.performance?h.performance.log(arguments):(h.verbose=Function.prototype.bind.call(console.info,console,j.name+":"),h.verbose.apply(console,arguments)))},error:function(){h.error=Function.prototype.bind.call(console.error,console,j.name+":"),h.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;j.performance&&(b=(new Date).getTime(),d=r||b,c=b-d,r=b,s.push({Element:q,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,100)},display:function(){var b=j.name+":",c=0;r=!1,clearTimeout(h.performance.timer),a.each(s,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",m&&(b+=" '"+m+"'"),(console.group!==d||console.table!==d)&&s.length>0&&(console.groupCollapsed(b),console.table?console.table(s):a.each(s,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),s=[]}},invoke:function(b,c,e){var f,g,h,j=y;return c=c||B,e=q||e,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),f=b.length-1,a.each(b,function(c,e){var h=c!=f?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[h])&&c!=f)j=j[h];else{if(j[h]!==d)return g=j[h],!1;if(!a.isPlainObject(j[e])||c==f)return j[e]!==d?(g=j[e],!1):!1;j=j[e]}})),a.isFunction(g)?h=g.apply(e,c):g!==d&&(h=g),a.isArray(i)?i.push(h):i!==d?i=[i,h]:h!==d&&(i=h),g}},A?(y===d&&h.initialize(),h.invoke(z)):(y!==d&&h.destroy(),h.initialize()),i!==d?i:this},a.tab=function(c){a(b).tab(c)},a.fn.tab.settings={name:"Tab",debug:!1,verbose:!0,performance:!0,namespace:"tab",onTabInit:function(){},onTabLoad:function(){},templates:{determineTitle:function(){}},auto:!1,history:!0,historyType:"hash",path:!1,context:"body",maxDepth:25,ignoreFirstLoad:!1,alwaysRefresh:!1,cache:!0,apiSettings:!1,error:{api:"You attempted to load content without API module",method:"The method you called is not defined",missingTab:"Tab cannot be found",noContent:"The tab you specified is missing a content url.",path:"History enabled, but no path was specified",recursion:"Max recursive depth reached",state:"The state library has not been initialized"},metadata:{tab:"tab",loaded:"loaded",promise:"promise"},className:{loading:"loading",active:"active"},selector:{tabs:".ui.tab"}}}(jQuery,window,document),function(a,b,c,d){a.fn.transition=function(){{var e,f=a(this),g=f.selector||"",h=(new Date).getTime(),i=[],j=arguments,k=j[0],l=[].slice.call(arguments,1),m="string"==typeof k;b.requestAnimationFrame||b.mozRequestAnimationFrame||b.webkitRequestAnimationFrame||b.msRequestAnimationFrame||function(a){setTimeout(a,0)}}return f.each(function(){var b,n,o,p,q,r,s,t,u,v,w=a(this),x=this;v={initialize:function(){b=v.get.settings.apply(x,j),v.verbose("Converted arguments into settings object",b),o=b.error,p=b.className,t=b.namespace,q=b.metadata,u="module-"+t,r=v.get.animationEvent(),s=v.get.animationName(),n=w.data(u)||v,m&&(m=v.invoke(k)),m===!1&&v.animate(),v.instantiate()},instantiate:function(){v.verbose("Storing instance of module",v),w.data(u,n)},destroy:function(){v.verbose("Destroying previous module for",x),w.removeData(u)},refresh:function(){v.verbose("Refreshing display type on next animation"),delete n.displayType},forceRepaint:function(){v.verbose("Forcing element repaint");var a=w.parent(),b=w.next();0===b.size()?w.detach().appendTo(a):w.detach().insertBefore(b)},repaint:function(){v.verbose("Repainting element");x.offsetWidth},animate:function(a){return b=a||b,v.is.supported()?(v.debug("Preparing animation",b.animation),v.is.animating()&&b.queue?(!b.allowRepeats&&v.has.direction()&&v.is.occuring()&&n.queuing!==!0?v.error(o.repeated):v.queue(b.animation),!1):void(v.can.animate?v.set.animating(b.animation):v.error(o.noAnimation,b.animation))):(v.error(o.support),!1)},reset:function(){v.debug("Resetting animation to beginning conditions"),w.off(r),v.restore.conditions(),v.hide(),v.remove.animating()},queue:function(a){v.debug("Queueing animation of",a),n.queuing=!0,w.one(r,function(){n.queuing=!1,v.repaint(),v.animate.apply(this,b)})},complete:function(){v.verbose("CSS animation complete",b.animation),v.is.looping()||(v.is.outward()?(v.verbose("Animation is outward, hiding element"),v.restore.conditions(),v.remove.display(),v.hide(),a.proxy(b.onHide,this)()):v.is.inward()?(v.verbose("Animation is outward, showing element"),v.restore.conditions(),v.show(),a.proxy(b.onShow,this)()):v.restore.conditions(),v.remove.duration(),v.remove.animating()),a.proxy(b.complete,this)()},has:{direction:function(a){return a=a||b.animation,-1!==a.search(p.inward)||-1!==a.search(p.outward)?(v.debug("Direction already set in animation"),!0):!1}},set:{animating:function(a){a=a||b.animation,v.save.conditions(),v.can.transition()&&!v.has.direction()&&v.set.direction(),v.remove.hidden(),v.set.display(),w.addClass(p.animating).addClass(p.transition).addClass(a).one(r,v.complete),v.set.duration(b.duration),v.debug("Starting tween",b.animation,w.attr("class"))},display:function(){var a=v.get.displayType();"block"!==a&&"none"!==a&&(v.verbose("Setting final visibility to",a),w.css({display:a}))},direction:function(){w.is(":visible")?(v.debug("Automatically determining the direction of animation","Outward"),w.removeClass(p.inward).addClass(p.outward)):(v.debug("Automatically determining the direction of animation","Inward"),w.removeClass(p.outward).addClass(p.inward))},looping:function(){v.debug("Transition set to loop"),w.addClass(p.looping)},duration:function(a){a=a||b.duration,a="number"==typeof a?a+"ms":a,v.verbose("Setting animation duration",a),w.css({"-webkit-animation-duration":a,"-moz-animation-duration":a,"-ms-animation-duration":a,"-o-animation-duration":a,"animation-duration":a})},hidden:function(){w.addClass(p.transition).addClass(p.hidden)},visible:function(){w.addClass(p.transition).addClass(p.visible)}},save:{displayType:function(a){n.displayType=a},transitionExists:function(b,c){a.fn.transition.exists[b]=c,v.verbose("Saving existence of transition",b,c)},conditions:function(){n.cache={className:w.attr("class"),style:w.attr("style")},v.verbose("Saving original attributes",n.cache)}},restore:{conditions:function(){return n.cache===d?!1:(n.cache.className?w.attr("class",n.cache.className):w.removeAttr("class"),n.cache.style?w.attr("style",n.cache.style):"block"===v.get.displayType()&&w.removeAttr("style"),v.is.looping()&&v.remove.looping(),void v.verbose("Restoring original attributes",n.cache))}},remove:{animating:function(){w.removeClass(p.animating)},display:function(){n.displayType!==d&&w.css("display","")},duration:function(){w.css({"-webkit-animation-duration":"","-moz-animation-duration":"","-ms-animation-duration":"","-o-animation-duration":"","animation-duration":""})},hidden:function(){w.removeClass(p.hidden)},visible:function(){w.removeClass(p.visible)},looping:function(){v.debug("Transitions are no longer looping"),w.removeClass(p.looping),v.forceRepaint()}},get:{settings:function(b,c,d){return"object"==typeof b?a.extend(!0,{},a.fn.transition.settings,b):"function"==typeof d?a.extend({},a.fn.transition.settings,{animation:b,complete:d,duration:c}):"string"==typeof c||"number"==typeof c?a.extend({},a.fn.transition.settings,{animation:b,duration:c}):"object"==typeof c?a.extend({},a.fn.transition.settings,c,{animation:b}):"function"==typeof c?a.extend({},a.fn.transition.settings,{animation:b,complete:c}):a.extend({},a.fn.transition.settings,{animation:b})},displayType:function(){return n.displayType===d&&v.can.transition(),n.displayType},transitionExists:function(b){return a.fn.transition.exists[b]},animationName:function(){var a,b=c.createElement("div"),e={animation:"animationName",OAnimation:"oAnimationName",MozAnimation:"mozAnimationName",WebkitAnimation:"webkitAnimationName"};for(a in e)if(b.style[a]!==d)return v.verbose("Determined animation vendor name property",e[a]),e[a];return!1},animationEvent:function(){var a,b=c.createElement("div"),e={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(a in e)if(b.style[a]!==d)return v.verbose("Determined animation vendor end event",e[a]),e[a];return!1}},can:{animate:function(){return"none"!==w.css(b.animation)?(v.debug("CSS definition found",w.css(b.animation)),!0):(v.debug("Unable to find css definition",w.attr("class")),!1) +},transition:function(){var c,e,f,g,h=w.attr("class"),i=b.animation,j=v.get.transitionExists(b.animation);return(j===d||n.displayType===d)&&(v.verbose("Determining whether animation exists"),c=a("
").addClass(h).appendTo(a("body")),e=c.removeClass(p.inward).removeClass(p.outward).addClass(p.animating).addClass(p.transition).addClass(i).css(s),f=c.addClass(p.inward).css(s),g=c.attr("class",h).show().css("display"),v.verbose("Determining final display state",g),e!=f?(v.debug("Transition exists for animation",i),j=!0):(v.debug("Static animation found",i,g),j=!1),c.remove(),v.save.displayType(g),v.save.transitionExists(i,j)),j}},is:{animating:function(){return w.hasClass(p.animating)},inward:function(){return w.hasClass(p.inward)},outward:function(){return w.hasClass(p.outward)},looping:function(){return w.hasClass(p.looping)},occuring:function(a){return a=a||b.animation,w.hasClass(a)},visible:function(){return w.is(":visible")},supported:function(){return s!==!1&&r!==!1}},hide:function(){v.verbose("Hiding element"),v.remove.visible(),v.set.hidden(),v.repaint()},show:function(a){v.verbose("Showing element",a),v.remove.hidden(),v.set.visible(),v.repaint()},start:function(){v.verbose("Starting animation"),w.removeClass(p.disabled)},stop:function(){v.debug("Stopping animation"),w.addClass(p.disabled)},toggle:function(){v.debug("Toggling play status"),w.toggleClass(p.disabled)},setting:function(c,e){if(a.isPlainObject(c))a.extend(!0,b,c);else{if(e===d)return b[c];b[c]=e}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,v,b);else{if(c===d)return v[b];v[b]=c}},debug:function(){b.debug&&(b.performance?v.performance.log(arguments):(v.debug=Function.prototype.bind.call(console.info,console,b.name+":"),v.debug.apply(console,arguments)))},verbose:function(){b.verbose&&b.debug&&(b.performance?v.performance.log(arguments):(v.verbose=Function.prototype.bind.call(console.info,console,b.name+":"),v.verbose.apply(console,arguments)))},error:function(){v.error=Function.prototype.bind.call(console.error,console,b.name+":"),v.error.apply(console,arguments)},performance:{log:function(a){var c,d,e;b.performance&&(c=(new Date).getTime(),e=h||c,d=c-e,h=c,i.push({Element:x,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":d})),clearTimeout(v.performance.timer),v.performance.timer=setTimeout(v.performance.display,100)},display:function(){var c=b.name+":",e=0;h=!1,clearTimeout(v.performance.timer),a.each(i,function(a,b){e+=b["Execution Time"]}),c+=" "+e+"ms",g&&(c+=" '"+g+"'"),f.size()>1&&(c+=" ("+f.size()+")"),(console.group!==d||console.table!==d)&&i.length>0&&(console.groupCollapsed(c),console.table?console.table(i):a.each(i,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),i=[]}},invoke:function(b,c,f){var g,h,i,j=n;return c=c||l,f=x||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,c):h!==d&&(i=h),a.isArray(e)?e.push(i):e!==d?e=[e,i]:i!==d&&(e=i),h||!1}},v.initialize()}),e!==d?e:this},a.fn.transition.exists={},a.fn.transition.settings={name:"Transition",debug:!1,verbose:!0,performance:!0,namespace:"transition",complete:function(){},onShow:function(){},onHide:function(){},allowRepeats:!1,animation:"fade",duration:"700ms",queue:!0,className:{animating:"animating",disabled:"disabled",hidden:"hidden",inward:"in",loading:"loading",looping:"looping",outward:"out",transition:"ui transition",visible:"visible"},error:{noAnimation:"There is no css animation matching the one you specified.",repeated:"That animation is already occurring, cancelling repeated animation",method:"The method you called is not defined",support:"This browser does not support CSS animations"}}}(jQuery,window,document),function(a,b,c,d){a.fn.video=function(b){var c,e=a(this),f=e.selector||"",g=(new Date).getTime(),h=[],i=arguments[0],j="string"==typeof i,k=[].slice.call(arguments,1);return e.each(function(){var l,m=a.isPlainObject(b)?a.extend(!0,{},a.fn.video.settings,b):a.extend({},a.fn.video.settings),n=m.selector,o=m.className,p=m.error,q=m.metadata,r=m.namespace,s="."+r,t="module-"+r,u=a(this),v=u.find(n.placeholder),w=u.find(n.playButton),x=u.find(n.embed),y=this,z=u.data(t);l={initialize:function(){l.debug("Initializing video"),v.on("click"+s,l.play),w.on("click"+s,l.play),l.instantiate()},instantiate:function(){l.verbose("Storing instance of module",l),z=l,u.data(t,l)},destroy:function(){l.verbose("Destroying previous instance of video"),u.removeData(t).off(s),v.off(s),w.off(s)},change:function(a,b,c){l.debug("Changing video to ",a,b,c),u.data(q.source,a).data(q.id,b).data(q.url,c),m.onChange()},reset:function(){l.debug("Clearing video embed and showing placeholder"),u.removeClass(o.active),x.html(" "),v.show(),m.onReset()},play:function(){l.debug("Playing video");var a=u.data(q.source)||!1,b=u.data(q.url)||!1,c=u.data(q.id)||!1;x.html(l.generate.html(a,c,b)),u.addClass(o.active),m.onPlay()},generate:{html:function(a,b,c){l.debug("Generating embed html");var d,e="auto"==m.width?u.width():m.width,f="auto"==m.height?u.height():m.height;return a&&b?"vimeo"==a?d='':"youtube"==a&&(d=''):c?d='':l.error(p.noVideo),d},url:function(a){var b=m.api?1:0,c=m.autoplay?1:0,d=m.hd?1:0,e=m.showUI?1:0,f=m.showUI?0:1,g="";return"vimeo"==a&&(g="api="+b+"&title="+e+"&byline="+e+"&portrait="+e+"&autoplay="+c,m.color&&(g+="&color="+m.color)),"ustream"==a?(g="autoplay="+c,m.color&&(g+="&color="+m.color)):"youtube"==a&&(g="enablejsapi="+b+"&autoplay="+c+"&autohide="+f+"&hq="+d+"&modestbranding=1",m.color&&(g+="&color="+m.color)),g}},setting:function(b,c){if(a.isPlainObject(b))a.extend(!0,m,b);else{if(c===d)return m[b];m[b]=c}},internal:function(b,c){if(a.isPlainObject(b))a.extend(!0,l,b);else{if(c===d)return l[b];l[b]=c}},debug:function(){m.debug&&(m.performance?l.performance.log(arguments):(l.debug=Function.prototype.bind.call(console.info,console,m.name+":"),l.debug.apply(console,arguments)))},verbose:function(){m.verbose&&m.debug&&(m.performance?l.performance.log(arguments):(l.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),l.verbose.apply(console,arguments)))},error:function(){l.error=Function.prototype.bind.call(console.error,console,m.name+":"),l.error.apply(console,arguments)},performance:{log:function(a){var b,c,d;m.performance&&(b=(new Date).getTime(),d=g||b,c=b-d,g=b,h.push({Element:y,Name:a[0],Arguments:[].slice.call(a,1)||"","Execution Time":c})),clearTimeout(l.performance.timer),l.performance.timer=setTimeout(l.performance.display,100)},display:function(){var b=m.name+":",c=0;g=!1,clearTimeout(l.performance.timer),a.each(h,function(a,b){c+=b["Execution Time"]}),b+=" "+c+"ms",f&&(b+=" '"+f+"'"),e.size()>1&&(b+=" ("+e.size()+")"),(console.group!==d||console.table!==d)&&h.length>0&&(console.groupCollapsed(b),console.table?console.table(h):a.each(h,function(a,b){console.log(b.Name+": "+b["Execution Time"]+"ms")}),console.groupEnd()),h=[]}},invoke:function(b,e,f){var g,h,i,j=z;return e=e||k,f=y||f,"string"==typeof b&&j!==d&&(b=b.split(/[\. ]/),g=b.length-1,a.each(b,function(c,e){var f=c!=g?e+b[c+1].charAt(0).toUpperCase()+b[c+1].slice(1):b;if(a.isPlainObject(j[f])&&c!=g)j=j[f];else{if(j[f]!==d)return h=j[f],!1;if(!a.isPlainObject(j[e])||c==g)return j[e]!==d?(h=j[e],!1):!1;j=j[e]}})),a.isFunction(h)?i=h.apply(f,e):h!==d&&(i=h),a.isArray(c)?c.push(i):c!==d?c=[c,i]:i!==d&&(c=i),h}},j?(z===d&&l.initialize(),l.invoke(i)):(z!==d&&l.destroy(),l.initialize())}),c!==d?c:this},a.fn.video.settings={name:"Video",namespace:"video",debug:!1,verbose:!0,performance:!0,metadata:{source:"source",id:"id",url:"url"},onPlay:function(){},onReset:function(){},onChange:function(){},onPause:function(){},onStop:function(){},width:"auto",height:"auto",autoplay:!1,color:"#442359",hd:!0,showUI:!1,api:!0,error:{noVideo:"No video specified",method:"The method you called is not defined"},className:{active:"active"},selector:{embed:".embed",placeholder:".placeholder",playButton:".play"}}}(jQuery,window,document); \ No newline at end of file diff --git a/public/pool/.gitignore b/public/pool/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/public/pool/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/tests/MktTest.php b/tests/MktTest.php deleted file mode 100644 index 5ef7de7..0000000 --- a/tests/MktTest.php +++ /dev/null @@ -1,12 +0,0 @@ -Mkt = new Mkt; - } - - public function testGetName() { - $this->assertEquals($this->Mkt->getName(), 'Mkt Virtual'); - } -} diff --git a/vendor/autoload.php b/vendor/autoload.php index 828cabe..c564657 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -1,7 +1,7 @@ prefixes; + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; } public function getFallbackDirs() { - return $this->fallbackDirs; + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; } public function getClassMap() @@ -75,61 +92,135 @@ public function addClassMap(array $classMap) } /** - * Registers a set of classes, merging with any others previously set. + * 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 classes prefix - * @param array|string $paths The location(s) of the classes - * @param bool $prepend Prepend the location(s) + * @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->fallbackDirs = array_merge( + $this->fallbackDirsPsr0 = array_merge( (array) $paths, - $this->fallbackDirs + $this->fallbackDirsPsr0 ); } else { - $this->fallbackDirs = array_merge( - $this->fallbackDirs, + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, (array) $paths ); } return; } - if (!isset($this->prefixes[$prefix])) { - $this->prefixes[$prefix] = (array) $paths; + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; return; } if ($prepend) { - $this->prefixes[$prefix] = array_merge( + $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-0 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->prefixes[$prefix] + $this->prefixDirsPsr4[$prefix] ); } else { - $this->prefixes[$prefix] = array_merge( - $this->prefixes[$prefix], + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], (array) $paths ); } } /** - * Registers a set of classes, replacing any others previously set. + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. * - * @param string $prefix The classes prefix - * @param array|string $paths The location(s) of the classes + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories */ public function set($prefix, $paths) { if (!$prefix) { - $this->fallbackDirs = (array) $paths; + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } - return; + /** + * 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; } - $this->prefixes[$prefix] = (array) $paths; } /** @@ -180,7 +271,7 @@ public function unregister() public function loadClass($class) { if ($file = $this->findFile($class)) { - include $file; + includeFile($file); return true; } @@ -195,46 +286,98 @@ public function loadClass($class) */ public function findFile($class) { + // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731 if ('\\' == $class[0]) { $class = substr($class, 1); } + // class map lookup if (isset($this->classMap[$class])) { return $this->classMap[$class]; } + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if ($file === null && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if ($file === null) { + // Remember that this class does not exist. + return $this->classMap[$class] = false; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { + if (0 === strpos($class, $prefix)) { + foreach ($this->prefixDirsPsr4[$prefix] as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { + 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 - $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)) . DIRECTORY_SEPARATOR; - $className = substr($class, $pos + 1); + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); } else { // PEAR-like class name - $classPath = null; - $className = $class; + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; } - $classPath .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; - - foreach ($this->prefixes as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) { - return $dir . DIRECTORY_SEPARATOR . $classPath; + 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; + } } } } } - foreach ($this->fallbackDirs as $dir) { - if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) { - return $dir . DIRECTORY_SEPARATOR . $classPath; + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; } } - if ($this->useIncludePath && $file = stream_resolve_include_path($classPath)) { + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { return $file; } - - return $this->classMap[$class] = false; } } + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 69cecaa..e40ab03 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1,13 +1,18 @@ $vendorDir . '/facebook/php-sdk/src/base_facebook.php', - 'Facebook' => $vendorDir . '/facebook/php-sdk/src/facebook.php', - 'FacebookApiException' => $vendorDir . '/facebook/php-sdk/src/base_facebook.php', - 'Mkt' => $baseDir . '/app/samples/Mkt.php', + 'BaseController' => $baseDir . '/app/controllers/BaseController.php', + 'IndexController' => $baseDir . '/app/controllers/IndexController.php', + 'PhotoController' => $baseDir . '/app/controllers/PhotoController.php', + 'Post' => $baseDir . '/app/models/Post.php', + 'PostLikes' => $baseDir . '/app/models/PostLikes.php', + 'SessionHandlerInterface' => $vendorDir . '/symfony/http-foundation/Symfony/Component/HttpFoundation/Resources/stubs/SessionHandlerInterface.php', + 'User' => $baseDir . '/app/models/User.php', + 'UserController' => $baseDir . '/app/controllers/UserController.php', + 'UserFollowers' => $baseDir . '/app/models/UserFollowers.php', ); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 2732fb3..fddaddc 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -1,10 +1,37 @@ $vendorDir . '/symfony/finder', + 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), + 'Symfony\\Component\\Templating\\' => array($vendorDir . '/symfony/templating'), + 'Symfony\\Component\\Security\\Core\\' => array($vendorDir . '/symfony/security-core'), + 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'), + 'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'), + 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), + 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), + 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), + 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), + 'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'), + 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'), + 'Skp' => array($baseDir . '/library'), + 'Psr\\Log\\' => array($vendorDir . '/psr/log'), + 'Illuminate\\Validation' => array($vendorDir . '/illuminate/validation'), + 'Illuminate\\Support' => array($vendorDir . '/illuminate/support'), + 'Illuminate\\Session' => array($vendorDir . '/illuminate/session'), + 'Illuminate\\Http' => array($vendorDir . '/illuminate/http'), + 'Illuminate\\Hashing' => array($vendorDir . '/illuminate/hashing'), + 'Illuminate\\Filesystem' => array($vendorDir . '/illuminate/filesystem'), + 'Illuminate\\Events' => array($vendorDir . '/illuminate/events'), + 'Illuminate\\Encryption' => array($vendorDir . '/illuminate/encryption'), + 'Illuminate\\Database' => array($vendorDir . '/illuminate/database'), + 'Illuminate\\Cookie' => array($vendorDir . '/illuminate/cookie'), + 'Illuminate\\Container' => array($vendorDir . '/illuminate/container'), + 'Illuminate\\Config' => array($vendorDir . '/illuminate/config'), + 'Illuminate\\Cache' => array($vendorDir . '/illuminate/cache'), + 'Illuminate\\Auth' => array($vendorDir . '/illuminate/auth'), + 'Carbon' => array($vendorDir . '/nesbot/carbon/src'), ); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index a2f31c6..32b7005 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -1,8 +1,8 @@ $path) { - $loader->add($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'; @@ -38,6 +40,16 @@ public static function getLoader() $loader->register(true); + $includeFiles = require __DIR__ . '/autoload_files.php'; + foreach ($includeFiles as $file) { + composerRequiree6f2488ad54f0f570615130d095c12d0($file); + } + return $loader; } } + +function composerRequiree6f2488ad54f0f570615130d095c12d0($file) +{ + require $file; +} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 482f092..a6d7176 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,79 +1,310 @@ [ { - "name": "facebook/php-sdk", - "version": "v3.2.2", - "version_normalized": "3.2.2.0", + "name": "symfony/routing", + "version": "v2.5.0", + "version_normalized": "2.5.0.0", + "target-dir": "Symfony/Component/Routing", "source": { "type": "git", - "url": "https://github.com/facebook/facebook-php-sdk.git", - "reference": "v3.2.2" + "url": "https://github.com/symfony/Routing.git", + "reference": "99b4e8e2978e6a08c086fd771cc0aa66c9e80a56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/facebook-php-sdk/zipball/v3.2.2", - "reference": "v3.2.2", + "url": "https://api.github.com/repos/symfony/Routing/zipball/99b4e8e2978e6a08c086fd771cc0aa66c9e80a56", + "reference": "99b4e8e2978e6a08c086fd771cc0aa66c9e80a56", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=5.2.0" + "php": ">=5.3.3" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/yaml": "~2.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/yaml": "For using the YAML loader" + }, + "time": "2014-04-23 14:08:54", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Routing\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "http://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ] + }, + { + "name": "symfony/http-foundation", + "version": "v2.5.0", + "version_normalized": "2.5.0.0", + "target-dir": "Symfony/Component/HttpFoundation", + "source": { + "type": "git", + "url": "https://github.com/symfony/HttpFoundation.git", + "reference": "044085422005aa3258fb3f710a7bf0202011f259" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/044085422005aa3258fb3f710a7bf0202011f259", + "reference": "044085422005aa3258fb3f710a7bf0202011f259", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" }, - "time": "2013-01-15 21:37:15", + "require-dev": { + "symfony/expression-language": "~2.4" + }, + "time": "2014-05-26 19:02:40", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, "installation-source": "dist", "autoload": { + "psr-0": { + "Symfony\\Component\\HttpFoundation\\": "" + }, "classmap": [ - "src" + "Symfony/Component/HttpFoundation/Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/filesystem", + "version": "v2.5.5", + "version_normalized": "2.5.5.0", + "target-dir": "Symfony/Component/Filesystem", + "source": { + "type": "git", + "url": "https://github.com/symfony/Filesystem.git", + "reference": "4e62fab0060a826561c78b665925b37c870c45f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/4e62fab0060a826561c78b665925b37c870c45f5", + "reference": "4e62fab0060a826561c78b665925b37c870c45f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2014-09-22 09:14:18", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Filesystem\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/config", + "version": "v2.5.0", + "version_normalized": "2.5.0.0", + "target-dir": "Symfony/Component/Config", + "source": { + "type": "git", + "url": "https://github.com/symfony/Config.git", + "reference": "9c8caadb38ecc69ac35ab31af4d1996944b5a09f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Config/zipball/9c8caadb38ecc69ac35ab31af4d1996944b5a09f", + "reference": "9c8caadb38ecc69ac35ab31af4d1996944b5a09f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/filesystem": "~2.3" + }, + "time": "2014-04-22 08:11:23", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Config\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "http://symfony.com" + }, + { + "name": "psr/log", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "time": "2012-12-21 11:40:51", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], "authors": [ { - "name": "Facebook", - "homepage": "https://github.com/facebook/facebook-php-sdk/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Facebook PHP SDK", - "homepage": "https://github.com/facebook/facebook-php-sdk", + "description": "Common interface for logging libraries", "keywords": [ - "facebook", - "sdk" + "log", + "psr", + "psr-3" ] }, { - "name": "symfony/finder", - "version": "v2.2.1", - "version_normalized": "2.2.1.0", - "target-dir": "Symfony/Component/Finder", + "name": "symfony/debug", + "version": "v2.5.5", + "version_normalized": "2.5.5.0", + "target-dir": "Symfony/Component/Debug", "source": { "type": "git", - "url": "https://github.com/symfony/Finder.git", - "reference": "v2.2.1" + "url": "https://github.com/symfony/Debug.git", + "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/v2.2.1", - "reference": "v2.2.1", + "url": "https://api.github.com/repos/symfony/Debug/zipball/4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", + "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2013-04-01 07:51:50", + "require-dev": { + "symfony/http-foundation": "~2.1", + "symfony/http-kernel": "~2.1" + }, + "suggest": { + "symfony/http-foundation": "", + "symfony/http-kernel": "" + }, + "time": "2014-09-28 15:22:14", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.5-dev" } }, "installation-source": "dist", "autoload": { "psr-0": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\Debug\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -81,50 +312,1246 @@ "MIT" ], "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" - }, + } + ], + "description": "Symfony Debug Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.5.5", + "version_normalized": "2.5.5.0", + "target-dir": "Symfony/Component/EventDispatcher", + "source": { + "type": "git", + "url": "https://github.com/symfony/EventDispatcher.git", + "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/f6281337bf5f985f585d1db6a83adb05ce531f46", + "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0", + "symfony/dependency-injection": "~2.0,<2.6.0", + "symfony/stopwatch": "~2.2" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "time": "2014-09-28 15:56:11", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony Finder Component", + "description": "Symfony EventDispatcher Component", "homepage": "http://symfony.com" }, { - "name": "eher/phpunit", - "version": "1.6", - "version_normalized": "1.6.0.0", + "name": "symfony/http-kernel", + "version": "v2.5.0", + "version_normalized": "2.5.0.0", + "target-dir": "Symfony/Component/HttpKernel", "source": { "type": "git", - "url": "https://github.com/EHER/phpunit-all-in-one", - "reference": "1.6" + "url": "https://github.com/symfony/HttpKernel.git", + "reference": "432a828e796a575d4a325a0fdf14132a615d2c53" }, "dist": { "type": "zip", - "url": "https://github.com/EHER/phpunit-all-in-one/zipball/1.6", - "reference": "1.6", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/432a828e796a575d4a325a0fdf14132a615d2c53", + "reference": "432a828e796a575d4a325a0fdf14132a615d2c53", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/finder": "*" + "php": ">=5.3.3", + "psr/log": "~1.0", + "symfony/debug": "~2.5", + "symfony/event-dispatcher": "~2.1", + "symfony/http-foundation": "~2.4" + }, + "require-dev": { + "symfony/browser-kit": "~2.2", + "symfony/class-loader": "~2.1", + "symfony/config": "~2.0", + "symfony/console": "~2.2", + "symfony/dependency-injection": "~2.0", + "symfony/finder": "~2.0", + "symfony/process": "~2.0", + "symfony/routing": "~2.2", + "symfony/stopwatch": "~2.2", + "symfony/templating": "~2.2" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/class-loader": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "" + }, + "time": "2014-05-31 18:45:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\HttpKernel\\": "" + } }, - "time": "2012-05-23 18:46:24", - "bin": [ - "bin/dbunit", - "bin/phpcov", - "bin/phpcpd", - "bin/phpdcd", - "bin/phploc", - "bin/phpunit", - "bin/phpunit-skelgen" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } ], + "description": "Symfony HttpKernel Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/templating", + "version": "v2.5.0", + "version_normalized": "2.5.0.0", + "target-dir": "Symfony/Component/Templating", + "source": { + "type": "git", + "url": "https://github.com/symfony/Templating.git", + "reference": "782802d7a72ba9b1dd72dc98a69a5b3768fc18d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Templating/zipball/782802d7a72ba9b1dd72dc98a69a5b3768fc18d0", + "reference": "782802d7a72ba9b1dd72dc98a69a5b3768fc18d0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "psr/log": "~1.0" + }, + "suggest": { + "psr/log": "For using debug logging in loaders" + }, + "time": "2014-04-18 19:44:02", "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Templating\\": "" + } + }, "notification-url": "https://packagist.org/downloads/", - "description": "Unofficial version of PHPUnit to be handled with Composer." + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony Templating Component", + "homepage": "http://symfony.com" + }, + { + "name": "nesbot/carbon", + "version": "1.13.0", + "version_normalized": "1.13.0.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "5cb6e71055f7b0b57956b73d324cc4de31278f42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/5cb6e71055f7b0b57956b73d324cc4de31278f42", + "reference": "5cb6e71055f7b0b57956b73d324cc4de31278f42", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "time": "2014-09-26 02:52:02", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Carbon": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "https://github.com/briannesbitt/Carbon", + "keywords": [ + "date", + "datetime", + "time" + ] + }, + { + "name": "illuminate/support", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Support", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "b6716d34afce6e69523725f2534a5c3a54dba964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/b6716d34afce6e69523725f2534a5c3a54dba964", + "reference": "b6716d34afce6e69523725f2534a5c3a54dba964", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "jeremeamia/superclosure": "~1.0", + "patchwork/utf8": "1.1.*" + }, + "time": "2014-09-12 21:42:43", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Support": "" + }, + "files": [ + "Illuminate/Support/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/container", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Container", + "source": { + "type": "git", + "url": "https://github.com/illuminate/container.git", + "reference": "5c43bd3bd5eea2ed2061cd0dd57d72404aceb978" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/container/zipball/5c43bd3bd5eea2ed2061cd0dd57d72404aceb978", + "reference": "5c43bd3bd5eea2ed2061cd0dd57d72404aceb978", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "time": "2014-09-11 19:02:16", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Container": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/events", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Events", + "source": { + "type": "git", + "url": "https://github.com/illuminate/events.git", + "reference": "19f93bcd692a52b39f1bd125f6f112eda0c1b8b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/events/zipball/19f93bcd692a52b39f1bd125f6f112eda0c1b8b0", + "reference": "19f93bcd692a52b39f1bd125f6f112eda0c1b8b0", + "shasum": "" + }, + "require": { + "illuminate/container": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0" + }, + "time": "2014-08-17 14:08:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Events": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/database", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Database", + "source": { + "type": "git", + "url": "https://github.com/illuminate/database.git", + "reference": "b66a7173ca6a81de3b2ccbd84372bee8624215f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/database/zipball/b66a7173ca6a81de3b2ccbd84372bee8624215f1", + "reference": "b66a7173ca6a81de3b2ccbd84372bee8624215f1", + "shasum": "" + }, + "require": { + "illuminate/container": "4.2.*", + "illuminate/events": "4.2.*", + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/cache": "4.2.*", + "illuminate/console": "4.2.*", + "illuminate/filesystem": "4.2.*", + "illuminate/pagination": "4.2.*" + }, + "time": "2014-09-11 14:10:29", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Database": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "keywords": [ + "database", + "laravel", + "orm", + "sql" + ] + }, + { + "name": "symfony/finder", + "version": "v2.5.5", + "version_normalized": "2.5.5.0", + "target-dir": "Symfony/Component/Finder", + "source": { + "type": "git", + "url": "https://github.com/symfony/Finder.git", + "reference": "d5033742b9a6206ef6d06e813870bca18e9205df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Finder/zipball/d5033742b9a6206ef6d06e813870bca18e9205df", + "reference": "d5033742b9a6206ef6d06e813870bca18e9205df", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2014-09-27 08:35:39", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Finder\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Finder Component", + "homepage": "http://symfony.com" + }, + { + "name": "illuminate/filesystem", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Filesystem", + "source": { + "type": "git", + "url": "https://github.com/illuminate/filesystem.git", + "reference": "501dc63c876ec0e0634ddb596890faec9d2f71e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/filesystem/zipball/501dc63c876ec0e0634ddb596890faec9d2f71e4", + "reference": "501dc63c876ec0e0634ddb596890faec9d2f71e4", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/finder": "2.5.*" + }, + "time": "2014-08-10 10:16:38", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Filesystem": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/config", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Config", + "source": { + "type": "git", + "url": "https://github.com/illuminate/config.git", + "reference": "811117b696b6cbc3c7974ffd615ece3d19e0d322" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/config/zipball/811117b696b6cbc3c7974ffd615ece3d19e0d322", + "reference": "811117b696b6cbc3c7974ffd615ece3d19e0d322", + "shasum": "" + }, + "require": { + "illuminate/filesystem": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0" + }, + "time": "2014-09-11 01:18:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Config": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "symfony/security-core", + "version": "v2.5.5", + "version_normalized": "2.5.5.0", + "target-dir": "Symfony/Component/Security/Core", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "fc79ba84f7db4a11d8313c87e8845096278d4144" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/fc79ba84f7db4a11d8313c87e8845096278d4144", + "reference": "fc79ba84f7db4a11d8313c87e8845096278d4144", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "ircmaxell/password-compat": "1.0.*", + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.4", + "symfony/validator": "~2.5" + }, + "suggest": { + "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/validator": "For using the user password constraint" + }, + "time": "2014-09-28 15:22:14", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Security\\Core\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Security Component - Core Library", + "homepage": "http://symfony.com" + }, + { + "name": "illuminate/encryption", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Encryption", + "source": { + "type": "git", + "url": "https://github.com/illuminate/encryption.git", + "reference": "4be63e614095d73996d9580a292f30bb436b3470" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/encryption/zipball/4be63e614095d73996d9580a292f30bb436b3470", + "reference": "4be63e614095d73996d9580a292f30bb436b3470", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/security-core": "2.5.*" + }, + "time": "2014-08-10 10:16:38", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Encryption": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/cookie", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Cookie", + "source": { + "type": "git", + "url": "https://github.com/illuminate/cookie.git", + "reference": "17d70ef8ea1561e910cb67043db09753ff4feb86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/cookie/zipball/17d70ef8ea1561e910cb67043db09753ff4feb86", + "reference": "17d70ef8ea1561e910cb67043db09753ff4feb86", + "shasum": "" + }, + "require": { + "illuminate/encryption": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/http-foundation": "2.5.*", + "symfony/http-kernel": "2.5.*" + }, + "time": "2014-08-07 11:28:31", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Cookie": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/cache", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Cache", + "source": { + "type": "git", + "url": "https://github.com/illuminate/cache.git", + "reference": "3fd8deccb023561d39651e8ad00af725c2bd4811" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/cache/zipball/3fd8deccb023561d39651e8ad00af725c2bd4811", + "reference": "3fd8deccb023561d39651e8ad00af725c2bd4811", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/database": "4.2.*", + "illuminate/encryption": "4.2.*", + "illuminate/filesystem": "4.2.*", + "illuminate/redis": "4.2.*" + }, + "time": "2014-09-10 16:29:36", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Cache": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/session", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Session", + "source": { + "type": "git", + "url": "https://github.com/illuminate/session.git", + "reference": "bef2293b13cfbd85d82fcb053f592b2a889c1734" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/session/zipball/bef2293b13cfbd85d82fcb053f592b2a889c1734", + "reference": "bef2293b13cfbd85d82fcb053f592b2a889c1734", + "shasum": "" + }, + "require": { + "illuminate/cache": "4.2.*", + "illuminate/cookie": "4.2.*", + "illuminate/encryption": "4.2.*", + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0", + "symfony/finder": "2.5.*", + "symfony/http-foundation": "2.5.*" + }, + "require-dev": { + "illuminate/console": "4.2.*" + }, + "time": "2014-09-10 16:44:17", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Session": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/http", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Http", + "source": { + "type": "git", + "url": "https://github.com/illuminate/http.git", + "reference": "34a3012bf8f502ac38c7f1c012366dc4f62d1a49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/http/zipball/34a3012bf8f502ac38c7f1c012366dc4f62d1a49", + "reference": "34a3012bf8f502ac38c7f1c012366dc4f62d1a49", + "shasum": "" + }, + "require": { + "illuminate/session": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/http-foundation": "2.5.*", + "symfony/http-kernel": "2.5.*" + }, + "time": "2014-09-10 14:59:29", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Http": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "ircmaxell/password-compat", + "version": "1.0.3", + "version_normalized": "1.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/ircmaxell/password_compat.git", + "reference": "1fc1521b5e9794ea77e4eca30717be9635f1d4f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/1fc1521b5e9794ea77e4eca30717be9635f1d4f4", + "reference": "1fc1521b5e9794ea77e4eca30717be9635f1d4f4", + "shasum": "" + }, + "time": "2013-04-30 19:58:08", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "lib/password.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@ircmaxell.com", + "homepage": "http://blog.ircmaxell.com" + } + ], + "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", + "homepage": "https://github.com/ircmaxell/password_compat", + "keywords": [ + "hashing", + "password" + ] + }, + { + "name": "illuminate/hashing", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Hashing", + "source": { + "type": "git", + "url": "https://github.com/illuminate/hashing.git", + "reference": "4622c13c31789f04c65974d30212198b04730f93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/hashing/zipball/4622c13c31789f04c65974d30212198b04730f93", + "reference": "4622c13c31789f04c65974d30212198b04730f93", + "shasum": "" + }, + "require": { + "illuminate/support": "4.2.*", + "ircmaxell/password-compat": "~1.0", + "php": ">=5.4.0" + }, + "time": "2014-05-23 16:40:19", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Hashing": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "illuminate/auth", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Auth", + "source": { + "type": "git", + "url": "https://github.com/illuminate/auth.git", + "reference": "ed7f3c37b00ec7fc887b78ba35f36862803f4abb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/auth/zipball/ed7f3c37b00ec7fc887b78ba35f36862803f4abb", + "reference": "ed7f3c37b00ec7fc887b78ba35f36862803f4abb", + "shasum": "" + }, + "require": { + "illuminate/cookie": "4.2.*", + "illuminate/encryption": "4.2.*", + "illuminate/events": "4.2.*", + "illuminate/hashing": "4.2.*", + "illuminate/http": "4.2.*", + "illuminate/session": "4.2.*", + "illuminate/support": "4.2.*", + "nesbot/carbon": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/console": "4.2.*", + "illuminate/routing": "4.2.*" + }, + "time": "2014-09-08 20:11:02", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Auth": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "symfony/translation", + "version": "v2.5.5", + "version_normalized": "2.5.5.0", + "target-dir": "Symfony/Component/Translation", + "source": { + "type": "git", + "url": "https://github.com/symfony/Translation.git", + "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Translation/zipball/170c0d895616e1a6a35681ffb0b9e339f58ab928", + "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/config": "~2.0", + "symfony/intl": "~2.3", + "symfony/yaml": "~2.2" + }, + "suggest": { + "symfony/config": "", + "symfony/yaml": "" + }, + "time": "2014-09-23 05:25:11", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Translation Component", + "homepage": "http://symfony.com" + }, + { + "name": "illuminate/validation", + "version": "v4.2.9", + "version_normalized": "4.2.9.0", + "target-dir": "Illuminate/Validation", + "source": { + "type": "git", + "url": "https://github.com/illuminate/validation.git", + "reference": "f1dd817fbc6c4ade2b1717263413ecf8419c0df1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/validation/zipball/f1dd817fbc6c4ade2b1717263413ecf8419c0df1", + "reference": "f1dd817fbc6c4ade2b1717263413ecf8419c0df1", + "shasum": "" + }, + "require": { + "illuminate/container": "4.2.*", + "illuminate/support": "4.2.*", + "php": ">=5.4.0", + "symfony/http-foundation": "2.5.*", + "symfony/translation": "2.5.*" + }, + "require-dev": { + "illuminate/database": "4.2.*" + }, + "time": "2014-09-12 21:59:39", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Illuminate\\Validation": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ] + }, + { + "name": "forxer/gravatar", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/forxer/gravatar.git", + "reference": "9bb46b8bad661aa978d50a7415af1d0f79975188" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/forxer/gravatar/zipball/9bb46b8bad661aa978d50a7415af1d0f79975188", + "reference": "9bb46b8bad661aa978d50a7415af1d0f79975188", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "time": "2014-08-22 17:33:45", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-4": { + "forxer\\Gravatar\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vincent Garnier", + "email": "contact@okatea.org" + } + ], + "description": "A library providing easy gravatar integration.", + "keywords": [ + "gravatar" + ] + }, + { + "name": "intervention/image", + "version": "2.0.11", + "version_normalized": "2.0.11.0", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "da8477b9cc59499ffebc148bf95d8e680ae1726f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/da8477b9cc59499ffebc148bf95d8e680ae1726f", + "reference": "da8477b9cc59499ffebc148bf95d8e680ae1726f", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "3.*" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "time": "2014-09-25 16:51:21", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@olivervogel.net", + "homepage": "http://olivervogel.net/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ] } ] diff --git a/vendor/eher/phpunit/.gitignore b/vendor/eher/phpunit/.gitignore deleted file mode 100644 index 1b05ebe..0000000 --- a/vendor/eher/phpunit/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.DS_Store -*.swp -composer.lock -composer.phar -vendor diff --git a/vendor/eher/phpunit/README.md b/vendor/eher/phpunit/README.md deleted file mode 100644 index 25e757a..0000000 --- a/vendor/eher/phpunit/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# PHPUnit All in One - -That's another way to install PHPUnit without the PEAR - -## Git - -Just clone and run - - ./bin/phpunit - -or - - /path/to/phpunit-all-in-one/bin/phpunit - - -## Composer - -Add ["EHER/PHPUnit"](http://packagist.org/packages/EHER/PHPUnit) package to your composer.json file - - { - "require": { - "php": ">=5.3.2", - "EHER/PHPUnit": ">=1.2" - } - } - -After install/update vendors with Composer, you can simply run - - php vendor/EHER/PHPUnit/phpunit.php - diff --git a/vendor/eher/phpunit/bin/dbunit b/vendor/eher/phpunit/bin/dbunit deleted file mode 100755 index bc30ffa..0000000 --- a/vendor/eher/phpunit/bin/dbunit +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env php -addFileToBlacklist(__FILE__, 'PHPUNIT'); -} - -$command = new PHPUnit_Extensions_Database_UI_Command( - new PHPUnit_Extensions_Database_UI_ModeFactory() -); - -$command->main( - new PHPUnit_Extensions_Database_UI_Mediums_Text($_SERVER['argv']), - new PHPUnit_Extensions_Database_UI_Context() -); diff --git a/vendor/eher/phpunit/bin/init.php b/vendor/eher/phpunit/bin/init.php deleted file mode 100644 index df6a800..0000000 --- a/vendor/eher/phpunit/bin/init.php +++ /dev/null @@ -1,57 +0,0 @@ -isDot()) { - continue; - } - $fileName = $root . '/' . $item->getFileName(); - $paths[] = $fileName; - } - - define('PEAR_ROOT_PATH', $root); - - $composerLoaderWhenInstalled = __DIR__ . '/../../../autoload.php'; - $composerLoaderWhenCloned = __DIR__ . '/../vendor/autoload.php'; - if (file_exists($composerLoaderWhenInstalled)) { - $loader = require_once $composerLoaderWhenInstalled; - } else if (file_exists($composerLoaderWhenCloned)) { - $loader = require_once $composerLoaderWhenCloned; - } else { - $classLoader = $root . '/symfony-class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php'; - - //fallback mode, if no composer installed, try to use symfony components in src - if (file_exists($classLoader)) { - require_once $classLoader; - $loader = new \Symfony\Component\ClassLoader\UniversalClassLoader; - $loader->registerNamespaces(array( - 'Symfony' => array($root . '/symfony-class-loader', $root . '/symfony-finder') - )); - $loader->register(); - } else { - echo "Can't find ComposerLoader.\n"; - echo "try:\n"; - echo "\tphp composer.phar update"; - exit(); - } - } - - if ($loader) { - $prefixes = $loader->getPrefixes(); - // some old components do not use autoloader and includes symfony components directly - add them to include path - foreach(array('Symfony', 'Symfony\\Component\\Finder') as $key) { - if(isset($prefixes[$key])) { - foreach($prefixes[$key] as $path) { - $paths[] = $path; - } - } - } - } - $paths[] = get_include_path(); - set_include_path(implode(PATH_SEPARATOR, $paths)); -}); diff --git a/vendor/eher/phpunit/bin/phpcov b/vendor/eher/phpunit/bin/phpcov deleted file mode 100755 index b5347ab..0000000 --- a/vendor/eher/phpunit/bin/phpcov +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env php - /dev/null || git branch) - VER=$(echo "$VER" | sed -n 's/\([0-9.]*\).*/\1/p') - [ "$VER" ] && \ - find . -type f -name '*.php' -exec perl -pi -e "s/\@package_version\@/$VER/g" {} \; - done -} - -fix_fdomdocument() { - mkdir -p "$VENDOR/fdomdocument/TheSeer/fDOMDocument" - mv $VENDOR/fDOMDocument/src $VENDOR/fdomdocument/TheSeer/fDOMDocument/src - mv $VENDOR/fDOMDocument/autoload.php $VENDOR/fdomdocument/TheSeer/fDOMDocument - rm -rf "$VENDOR/fDOMDocument" -} - -fix_ezc() { - local i - for i in $EZC_TMP/* ; do - cp -R $i/src $EZC_ROOT/$(basename $i) - cp $i/src/*_autoload.php "$EZC_AUTOLOAD" - done - sed "s/\(\$libraryMode =[ ]*\).*/\1'pear';/g" -i $EZC_ROOT/Base/base.php -} - -fix_finder_facade() { - mkdir -p "$VENDOR/finder-facade-fix/SebastianBergmann" - mv $VENDOR/finder-facade/src $VENDOR/finder-facade-fix/SebastianBergmann/FinderFacade - rm -rf "$VENDOR/finder-facade" -} - -fix_eoln() { - cd $VENDOR - find . -type f -name '*.html' -exec sed 's/\r//g' -i {} \; - find . -type f -name '*.bat' -exec sed 's/\r//g' -i {} \; -} - -clean() { - for i in $VENDOR/* ; do - rm -rf "$i/.git" - done - [ "$COMPOSER_ONLY" ] || rm -rf "$VENDOR/symfony-finder/Symfony/Component/Finder/.git" - [ "$COMPOSER_ONLY" ] || rm -rf "$VENDOR/symfony-class-loader/Symfony/Component/ClassLoader/.git" - rm -rf "$EZC_TMP" -} - -rm -rf "$VENDOR" -_init -download -fix_version -fix_fdomdocument -fix_ezc -fix_finder_facade -fix_eoln -clean diff --git a/vendor/eher/phpunit/composer.json b/vendor/eher/phpunit/composer.json deleted file mode 100644 index 4e6fb6d..0000000 --- a/vendor/eher/phpunit/composer.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "Eher/PHPUnit", - "description": "Unofficial version of PHPUnit to be handled with Composer.", - "require": { - "php": ">=5.3.0", - "symfony/finder": "*" - }, - "bin": ["bin/dbunit", "bin/phpcov", "bin/phpcpd", "bin/phpdcd", "bin/phploc", "bin/phpunit", "bin/phpunit-skelgen"] -} - diff --git a/vendor/eher/phpunit/src/dbunit/.gitattributes b/vendor/eher/phpunit/src/dbunit/.gitattributes deleted file mode 100644 index 461090b..0000000 --- a/vendor/eher/phpunit/src/dbunit/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/eher/phpunit/src/dbunit/.gitignore b/vendor/eher/phpunit/src/dbunit/.gitignore deleted file mode 100644 index a741983..0000000 --- a/vendor/eher/phpunit/src/dbunit/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -build/api -build/code-browser -build/coverage -build/logs -build/pdepend -cache.properties -phpunit.xml diff --git a/vendor/eher/phpunit/src/dbunit/ChangeLog.markdown b/vendor/eher/phpunit/src/dbunit/ChangeLog.markdown deleted file mode 100644 index 72deaa8..0000000 --- a/vendor/eher/phpunit/src/dbunit/ChangeLog.markdown +++ /dev/null @@ -1,20 +0,0 @@ -DbUnit 1.1 -========== - -This is the list of changes for the DbUnit 1.1 release series. - -DbUnit 1.1.2 -------------- - -* `PHPUnit_Extensions_Database_Constraint_TableIsEqual` did not work with PHPUnit 3.6 and DbUnit 1.1. - -DbUnit 1.1.1 -------------- - -* `PHPUnit_Extensions_Database_TestCase` test cases did not work at all with PHPUnit 3.6 and DbUnit 1.1. - -DbUnit 1.1.0 -------------- - -* Added support for MS SQL Server. -* Added `assertTableRowCount()`. diff --git a/vendor/eher/phpunit/src/dbunit/LICENSE b/vendor/eher/phpunit/src/dbunit/LICENSE deleted file mode 100644 index d76d0d5..0000000 --- a/vendor/eher/phpunit/src/dbunit/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -DbUnit - -Copyright (c) 2002-2012, Sebastian Bergmann . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/AbstractTester.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/AbstractTester.php deleted file mode 100644 index 69fffb2..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/AbstractTester.php +++ /dev/null @@ -1,193 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Can be used as a foundation for new DatabaseTesters. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_AbstractTester implements PHPUnit_Extensions_Database_ITester -{ - - /** - * @var PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - protected $setUpOperation; - - /** - * @var PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - protected $tearDownOperation; - - /** - * @var PHPUnit_Extensions_Database_DataSet_IDataSet - */ - protected $dataSet; - - /** - * @var string - */ - protected $schema; - - /** - * Creates a new database tester. - */ - public function __construct() - { - $this->setUpOperation = PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT(); - $this->tearDownOperation = PHPUnit_Extensions_Database_Operation_Factory::NONE(); - } - - /** - * Closes the specified connection. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - */ - public function closeConnection(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - $connection->close(); - } - - /** - * Returns the test dataset. - * - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - */ - public function getDataSet() - { - return $this->dataSet; - } - - /** - * TestCases must call this method inside setUp(). - */ - public function onSetUp() - { - $this->getSetUpOperation()->execute($this->getConnection(), $this->getDataSet()); - } - - /** - * TestCases must call this method inside tearDown(). - */ - public function onTearDown() - { - $this->getTearDownOperation()->execute($this->getConnection(), $this->getDataSet()); - } - - /** - * Sets the test dataset to use. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet - */ - public function setDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - $this->dataSet = $dataSet; - } - - /** - * Sets the schema value. - * - * @param string $schema - */ - public function setSchema($schema) - { - $this->schema = $schema; - } - - /** - * Sets the DatabaseOperation to call when starting the test. - * - * @param PHPUnit_Extensions_Database_Operation_DatabaseOperation $setUpOperation - */ - public function setSetUpOperation(PHPUnit_Extensions_Database_Operation_IDatabaseOperation $setUpOperation) - { - $this->setUpOperation = $setUpOperation; - } - - /** - * Sets the DatabaseOperation to call when ending the test. - * - * @param PHPUnit_Extensions_Database_Operation_DatabaseOperation $tearDownOperation - */ - public function setTearDownOperation(PHPUnit_Extensions_Database_Operation_IDatabaseOperation $tearDownOperation) - { - $this->tearDownOperation = $tearDownOperation; - } - - /** - * Returns the schema value - * - * @return string - */ - protected function getSchema() - { - return $this->schema; - } - - /** - * Returns the database operation that will be called when starting the test. - * - * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation - */ - protected function getSetUpOperation() - { - return $this->setUpOperation; - } - - /** - * Returns the database operation that will be called when ending the test. - * - * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation - */ - protected function getTearDownOperation() - { - return $this->tearDownOperation; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php deleted file mode 100644 index dd09a04..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php +++ /dev/null @@ -1,165 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.1.0 - */ - -function phpunit_dbunit_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - 'phpunit_extensions_database_abstracttester' => '/Extensions/Database/AbstractTester.php', - 'phpunit_extensions_database_constraint_datasetisequal' => '/Extensions/Database/Constraint/DataSetIsEqual.php', - 'phpunit_extensions_database_constraint_tableisequal' => '/Extensions/Database/Constraint/TableIsEqual.php', - 'phpunit_extensions_database_constraint_tablerowcount' => '/Extensions/Database/Constraint/TableRowCount.php', - 'phpunit_extensions_database_dataset_abstractdataset' => '/Extensions/Database/DataSet/AbstractDataSet.php', - 'phpunit_extensions_database_dataset_abstracttable' => '/Extensions/Database/DataSet/AbstractTable.php', - 'phpunit_extensions_database_dataset_abstracttablemetadata' => '/Extensions/Database/DataSet/AbstractTableMetaData.php', - 'phpunit_extensions_database_dataset_abstractxmldataset' => '/Extensions/Database/DataSet/AbstractXmlDataSet.php', - 'phpunit_extensions_database_dataset_compositedataset' => '/Extensions/Database/DataSet/CompositeDataSet.php', - 'phpunit_extensions_database_dataset_csvdataset' => '/Extensions/Database/DataSet/CsvDataSet.php', - 'phpunit_extensions_database_dataset_datasetfilter' => '/Extensions/Database/DataSet/DataSetFilter.php', - 'phpunit_extensions_database_dataset_defaultdataset' => '/Extensions/Database/DataSet/DefaultDataSet.php', - 'phpunit_extensions_database_dataset_defaulttable' => '/Extensions/Database/DataSet/DefaultTable.php', - 'phpunit_extensions_database_dataset_defaulttableiterator' => '/Extensions/Database/DataSet/DefaultTableIterator.php', - 'phpunit_extensions_database_dataset_defaulttablemetadata' => '/Extensions/Database/DataSet/DefaultTableMetaData.php', - 'phpunit_extensions_database_dataset_flatxmldataset' => '/Extensions/Database/DataSet/FlatXmlDataSet.php', - 'phpunit_extensions_database_dataset_idataset' => '/Extensions/Database/DataSet/IDataSet.php', - 'phpunit_extensions_database_dataset_ipersistable' => '/Extensions/Database/DataSet/IPersistable.php', - 'phpunit_extensions_database_dataset_ispec' => '/Extensions/Database/DataSet/ISpec.php', - 'phpunit_extensions_database_dataset_itable' => '/Extensions/Database/DataSet/ITable.php', - 'phpunit_extensions_database_dataset_itableiterator' => '/Extensions/Database/DataSet/ITableIterator.php', - 'phpunit_extensions_database_dataset_itablemetadata' => '/Extensions/Database/DataSet/ITableMetaData.php', - 'phpunit_extensions_database_dataset_mysqlxmldataset' => '/Extensions/Database/DataSet/MysqlXmlDataSet.php', - 'phpunit_extensions_database_dataset_persistors_abstract' => '/Extensions/Database/DataSet/Persistors/Abstract.php', - 'phpunit_extensions_database_dataset_persistors_factory' => '/Extensions/Database/DataSet/Persistors/Factory.php', - 'phpunit_extensions_database_dataset_persistors_flatxml' => '/Extensions/Database/DataSet/Persistors/FlatXml.php', - 'phpunit_extensions_database_dataset_persistors_mysqlxml' => '/Extensions/Database/DataSet/Persistors/MysqlXml.php', - 'phpunit_extensions_database_dataset_persistors_xml' => '/Extensions/Database/DataSet/Persistors/Xml.php', - 'phpunit_extensions_database_dataset_persistors_yaml' => '/Extensions/Database/DataSet/Persistors/Yaml.php', - 'phpunit_extensions_database_dataset_querydataset' => '/Extensions/Database/DataSet/QueryDataSet.php', - 'phpunit_extensions_database_dataset_querytable' => '/Extensions/Database/DataSet/QueryTable.php', - 'phpunit_extensions_database_dataset_replacementdataset' => '/Extensions/Database/DataSet/ReplacementDataSet.php', - 'phpunit_extensions_database_dataset_replacementtable' => '/Extensions/Database/DataSet/ReplacementTable.php', - 'phpunit_extensions_database_dataset_replacementtableiterator' => '/Extensions/Database/DataSet/ReplacementTableIterator.php', - 'phpunit_extensions_database_dataset_specs_csv' => '/Extensions/Database/DataSet/Specs/Csv.php', - 'phpunit_extensions_database_dataset_specs_dbquery' => '/Extensions/Database/DataSet/Specs/DbQuery.php', - 'phpunit_extensions_database_dataset_specs_dbtable' => '/Extensions/Database/DataSet/Specs/DbTable.php', - 'phpunit_extensions_database_dataset_specs_factory' => '/Extensions/Database/DataSet/Specs/Factory.php', - 'phpunit_extensions_database_dataset_specs_flatxml' => '/Extensions/Database/DataSet/Specs/FlatXml.php', - 'phpunit_extensions_database_dataset_specs_ifactory' => '/Extensions/Database/DataSet/Specs/IFactory.php', - 'phpunit_extensions_database_dataset_specs_xml' => '/Extensions/Database/DataSet/Specs/Xml.php', - 'phpunit_extensions_database_dataset_specs_yaml' => '/Extensions/Database/DataSet/Specs/Yaml.php', - 'phpunit_extensions_database_dataset_tablefilter' => '/Extensions/Database/DataSet/TableFilter.php', - 'phpunit_extensions_database_dataset_tablemetadatafilter' => '/Extensions/Database/DataSet/TableMetaDataFilter.php', - 'phpunit_extensions_database_dataset_xmldataset' => '/Extensions/Database/DataSet/XmlDataSet.php', - 'phpunit_extensions_database_dataset_yamldataset' => '/Extensions/Database/DataSet/YamlDataSet.php', - 'phpunit_extensions_database_db_dataset' => '/Extensions/Database/DB/DataSet.php', - 'phpunit_extensions_database_db_defaultdatabaseconnection' => '/Extensions/Database/DB/DefaultDatabaseConnection.php', - 'phpunit_extensions_database_db_filtereddataset' => '/Extensions/Database/DB/FilteredDataSet.php', - 'phpunit_extensions_database_db_idatabaseconnection' => '/Extensions/Database/DB/IDatabaseConnection.php', - 'phpunit_extensions_database_db_imetadata' => '/Extensions/Database/DB/IMetaData.php', - 'phpunit_extensions_database_db_metadata' => '/Extensions/Database/DB/MetaData.php', - 'phpunit_extensions_database_db_metadata_informationschema' => '/Extensions/Database/DB/MetaData/InformationSchema.php', - 'phpunit_extensions_database_db_metadata_mysql' => '/Extensions/Database/DB/MetaData/MySQL.php', - 'phpunit_extensions_database_db_metadata_oci' => '/Extensions/Database/DB/MetaData/Oci.php', - 'phpunit_extensions_database_db_metadata_pgsql' => '/Extensions/Database/DB/MetaData/PgSQL.php', - 'phpunit_extensions_database_db_metadata_sqlite' => '/Extensions/Database/DB/MetaData/Sqlite.php', - 'phpunit_extensions_database_db_metadata_sqlsrv' => '/Extensions/Database/DB/MetaData/SqlSrv.php', - 'phpunit_extensions_database_db_resultsettable' => '/Extensions/Database/DB/ResultSetTable.php', - 'phpunit_extensions_database_db_table' => '/Extensions/Database/DB/Table.php', - 'phpunit_extensions_database_db_tableiterator' => '/Extensions/Database/DB/TableIterator.php', - 'phpunit_extensions_database_db_tablemetadata' => '/Extensions/Database/DB/TableMetaData.php', - 'phpunit_extensions_database_defaulttester' => '/Extensions/Database/DefaultTester.php', - 'phpunit_extensions_database_exception' => '/Extensions/Database/Exception.php', - 'phpunit_extensions_database_idatabaselistconsumer' => '/Extensions/Database/IDatabaseListConsumer.php', - 'phpunit_extensions_database_itester' => '/Extensions/Database/ITester.php', - 'phpunit_extensions_database_operation_composite' => '/Extensions/Database/Operation/Composite.php', - 'phpunit_extensions_database_operation_delete' => '/Extensions/Database/Operation/Delete.php', - 'phpunit_extensions_database_operation_deleteall' => '/Extensions/Database/Operation/DeleteAll.php', - 'phpunit_extensions_database_operation_exception' => '/Extensions/Database/Operation/Exception.php', - 'phpunit_extensions_database_operation_factory' => '/Extensions/Database/Operation/Factory.php', - 'phpunit_extensions_database_operation_idatabaseoperation' => '/Extensions/Database/Operation/IDatabaseOperation.php', - 'phpunit_extensions_database_operation_insert' => '/Extensions/Database/Operation/Insert.php', - 'phpunit_extensions_database_operation_null' => '/Extensions/Database/Operation/Null.php', - 'phpunit_extensions_database_operation_replace' => '/Extensions/Database/Operation/Replace.php', - 'phpunit_extensions_database_operation_rowbased' => '/Extensions/Database/Operation/RowBased.php', - 'phpunit_extensions_database_operation_truncate' => '/Extensions/Database/Operation/Truncate.php', - 'phpunit_extensions_database_operation_update' => '/Extensions/Database/Operation/Update.php', - 'phpunit_extensions_database_testcase' => '/Extensions/Database/TestCase.php', - 'phpunit_extensions_database_ui_command' => '/Extensions/Database/UI/Command.php', - 'phpunit_extensions_database_ui_context' => '/Extensions/Database/UI/Context.php', - 'phpunit_extensions_database_ui_imedium' => '/Extensions/Database/UI/IMedium.php', - 'phpunit_extensions_database_ui_imediumprinter' => '/Extensions/Database/UI/IMediumPrinter.php', - 'phpunit_extensions_database_ui_imode' => '/Extensions/Database/UI/IMode.php', - 'phpunit_extensions_database_ui_imodefactory' => '/Extensions/Database/UI/IModeFactory.php', - 'phpunit_extensions_database_ui_invalidmodeexception' => '/Extensions/Database/UI/InvalidModeException.php', - 'phpunit_extensions_database_ui_mediums_text' => '/Extensions/Database/UI/Mediums/Text.php', - 'phpunit_extensions_database_ui_modefactory' => '/Extensions/Database/UI/ModeFactory.php', - 'phpunit_extensions_database_ui_modes_exportdataset' => '/Extensions/Database/UI/Modes/ExportDataSet.php', - 'phpunit_extensions_database_ui_modes_exportdataset_arguments' => '/Extensions/Database/UI/Modes/ExportDataSet/Arguments.php' - ); - - $path = dirname(dirname(dirname(__FILE__))); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - $file = $path . $classes[$cn]; - - require $file; - } -} - -spl_autoload_register('phpunit_dbunit_autoload'); diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php.in b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php.in deleted file mode 100644 index b4d901b..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Autoload.php.in +++ /dev/null @@ -1,76 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.1.0 - */ - -function phpunit_dbunit_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - ___CLASSLIST___ - ); - - $path = dirname(dirname(dirname(__FILE__))); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - $file = $path . $classes[$cn]; - - require $file; - } -} - -spl_autoload_register('phpunit_dbunit_autoload'); diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/DataSetIsEqual.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/DataSetIsEqual.php deleted file mode 100644 index 4c6cae3..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/DataSetIsEqual.php +++ /dev/null @@ -1,123 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Asserts whether or not two dbunit datasets are equal. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Constraint_DataSetIsEqual extends PHPUnit_Framework_Constraint -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_IDataSet - */ - protected $value; - - /** - * @var string - */ - protected $failure_reason; - - /** - * Creates a new constraint. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $value - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_IDataSet $value) - { - $this->value = $value; - } - - /** - * Evaluates the constraint for parameter $other. Returns TRUE if the - * constraint is met, FALSE otherwise. - * - * This method can be overridden to implement the evaluation algorithm. - * - * @param mixed $other Value or object to evaluate. - * @return bool - */ - protected function matches($other) - { - if (!$other instanceof PHPUnit_Extensions_Database_DataSet_IDataSet) { - throw new InvalidArgumentException( - 'PHPUnit_Extensions_Database_DataSet_IDataSet expected' - ); - } - - return $this->value->matches($other); - } - - /** - * Returns the description of the failure - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other Evaluated value or object. - * @return string - */ - protected function failureDescription($other) - { - return $other->__toString() . ' ' . $this->toString(); - } - - /** - * Returns a string representation of the constraint. - * - * @return string - */ - public function toString() - { - return sprintf( - 'is equal to expected %s', $this->value->__toString() - ); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableIsEqual.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableIsEqual.php deleted file mode 100644 index e52e349..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableIsEqual.php +++ /dev/null @@ -1,123 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Asserts whether or not two dbunit tables are equal. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Constraint_TableIsEqual extends PHPUnit_Framework_Constraint -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_ITable - */ - protected $value; - - /** - * @var string - */ - protected $failure_reason; - - /** - * Creates a new constraint. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $value - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_ITable $value) - { - $this->value = $value; - } - - /** - * Evaluates the constraint for parameter $other. Returns TRUE if the - * constraint is met, FALSE otherwise. - * - * This method can be overridden to implement the evaluation algorithm. - * - * @param mixed $other Value or object to evaluate. - * @return bool - */ - protected function matches($other) - { - if (!$other instanceof PHPUnit_Extensions_Database_DataSet_ITable) { - throw new InvalidArgumentException( - 'PHPUnit_Extensions_Database_DataSet_ITable expected' - ); - } - - return $this->value->matches($other); - } - - /** - * Returns the description of the failure - * - * The beginning of failure messages is "Failed asserting that" in most - * cases. This method should return the second part of that sentence. - * - * @param mixed $other Evaluated value or object. - * @return string - */ - protected function failureDescription($other) - { - return $other->__toString() . ' ' . $this->toString(); - } - - /** - * Returns a string representation of the constraint. - * - * @return string - */ - public function toString() - { - return sprintf( - 'is equal to expected %s', $this->value->__toString() - ); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableRowCount.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableRowCount.php deleted file mode 100644 index 9f3c01c..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Constraint/TableRowCount.php +++ /dev/null @@ -1,102 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Asserts the row count in a table - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Constraint_TableRowCount extends PHPUnit_Framework_Constraint -{ - /** - * @var int - */ - protected $value; - - /** - * @var string - */ - protected $tableName; - - /** - * Creates a new constraint. - * - * @param int $expected - */ - public function __construct($tableName, $value) - { - $this->tableName = $tableName; - $this->value = $value; - } - - /** - * Evaluates the constraint for parameter $other. Returns TRUE if the - * constraint is met, FALSE otherwise. - * - * This method can be overridden to implement the evaluation algorithm. - * - * @param mixed $other Value or object to evaluate. - * @return bool - */ - protected function matches($other) - { - return $other == $this->value; - } - - /** - * Returns a string representation of the constraint. - * - * @return string - */ - public function toString() - { - return sprintf('is equal to expected row count %d', $this->value); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DataSet.php deleted file mode 100644 index 325c499..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DataSet.php +++ /dev/null @@ -1,173 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides access to a database instance as a data set. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_DataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - - /** - * An array of ITable objects. - * - * @var array - */ - protected $tables = array(); - - /** - * The database connection this dataset is using. - * - * @var PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - protected $databaseConnection; - - /** - * Creates a new dataset using the given database connection. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection - */ - public function __construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection) - { - $this->databaseConnection = $databaseConnection; - } - - /** - * Creates the query necessary to pull all of the data from a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData - * @return unknown - */ - public static function buildTableSelect(PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData, PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection = NULL) - { - if ($tableMetaData->getTableName() == '') { - $e = new Exception("Empty Table Name"); - echo $e->getTraceAsString(); - throw $e; - } - - $columns = $tableMetaData->getColumns(); - if ($databaseConnection) { - $columns = array_map(array($databaseConnection, 'quoteSchemaObject'), $columns); - } - $columnList = implode(', ', $columns); - - if ($databaseConnection) { - $tableName = $databaseConnection->quoteSchemaObject($tableMetaData->getTableName()); - } else { - $tableName = $tableMetaData->getTableName(); - } - - $primaryKeys = $tableMetaData->getPrimaryKeys(); - if ($databaseConnection) { - $primaryKeys = array_map(array($databaseConnection, 'quoteSchemaObject'), $primaryKeys); - } - if (count($primaryKeys)) { - $orderBy = 'ORDER BY ' . implode(' ASC, ', $primaryKeys) . ' ASC'; - } else { - $orderBy = ''; - } - - return "SELECT {$columnList} FROM {$tableName} {$orderBy}"; - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DB_TableIterator - */ - protected function createIterator($reverse = FALSE) - { - return new PHPUnit_Extensions_Database_DB_TableIterator($this->getTableNames(), $this, $reverse); - } - - /** - * Returns a table object for the given table. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DB_Table - */ - public function getTable($tableName) - { - if (!in_array($tableName, $this->getTableNames())) { - throw new InvalidArgumentException("$tableName is not a table in the current database."); - } - - if (empty($this->tables[$tableName])) { - $this->tables[$tableName] = new PHPUnit_Extensions_Database_DB_Table($this->getTableMetaData($tableName), $this->databaseConnection); - } - - return $this->tables[$tableName]; - } - - /** - * Returns a table meta data object for the given table. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData - */ - public function getTableMetaData($tableName) - { - return new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($tableName, $this->databaseConnection->getMetaData()->getTableColumns($tableName), $this->databaseConnection->getMetaData()->getTablePrimaryKeys($tableName)); - } - - /** - * Returns a list of table names for the database - * - * @return Array - */ - public function getTableNames() - { - return $this->databaseConnection->getMetaData()->getTableNames(); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DefaultDatabaseConnection.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DefaultDatabaseConnection.php deleted file mode 100644 index dd0cd21..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/DefaultDatabaseConnection.php +++ /dev/null @@ -1,230 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface for communicating with a database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection implements PHPUnit_Extensions_Database_DB_IDatabaseConnection -{ - /** - * @var PDO - */ - protected $connection; - - /** - * The metadata object used to retrieve table meta data from the database. - * - * @var PHPUnit_Extensions_Database_DB_IMetaData - */ - protected $metaData; - - /** - * Creates a new database connection - * - * @param PDO $connection - * @param string $schema - The name of the database schema you will be testing against. - */ - public function __construct(PDO $connection, $schema = '') - { - $this->connection = $connection; - $this->metaData = PHPUnit_Extensions_Database_DB_MetaData::createMetaData($connection, $schema); - $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - } - - /** - * Close this connection. - */ - public function close() - { - unset($this->connection); - } - - /** - * Returns a database metadata object that can be used to retrieve table - * meta data from the database. - * - * @return PHPUnit_Extensions_Database_DB_IMetaData - */ - public function getMetaData() - { - return $this->metaData; - } - - /** - * Returns the schema for the connection. - * - * @return string - */ - public function getSchema() - { - return $this->getMetaData()->getSchema(); - } - - /** - * Creates a dataset containing the specified table names. If no table - * names are specified then it will created a dataset over the entire - * database. - * - * @param array $tableNames - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - * @todo Implement the filtered data set. - */ - public function createDataSet(array $tableNames = NULL) - { - if (empty($tableNames)) { - return new PHPUnit_Extensions_Database_DB_DataSet($this); - } else { - return new PHPUnit_Extensions_Database_DB_FilteredDataSet($this, $tableNames); - } - } - - /** - * Creates a table with the result of the specified SQL statement. - * - * @param string $resultName - * @param string $sql - * @return PHPUnit_Extensions_Database_DB_Table - */ - public function createQueryTable($resultName, $sql) - { - return new PHPUnit_Extensions_Database_DataSet_QueryTable($resultName, $sql, $this); - } - - /** - * Returns this connection database configuration - * - * @return PHPUnit_Extensions_Database_Database_DatabaseConfig - */ - public function getConfig() - { - } - - /** - * Returns a PDO Connection - * - * @return PDO - */ - public function getConnection() - { - return $this->connection; - } - - /** - * Returns the number of rows in the given table. You can specify an - * optional where clause to return a subset of the table. - * - * @param string $tableName - * @param string $whereClause - * @return int - */ - public function getRowCount($tableName, $whereClause = NULL) - { - $query = "SELECT COUNT(*) FROM ".$this->quoteSchemaObject($tableName); - - if (isset($whereClause)) { - $query .= " WHERE {$whereClause}"; - } - - return (int) $this->connection->query($query)->fetchColumn(); - } - - /** - * Returns a quoted schema object. (table name, column name, etc) - * - * @param string $object - * @return string - */ - public function quoteSchemaObject($object) - { - return $this->getMetaData()->quoteSchemaObject($object); - } - - /** - * Returns the command used to truncate a table. - * - * @return string - */ - public function getTruncateCommand() - { - return $this->getMetaData()->getTruncateCommand(); - } - - /** - * Returns true if the connection allows cascading - * - * @return bool - */ - public function allowsCascading() - { - return $this->getMetaData()->allowsCascading(); - } - - /** - * Disables primary keys if connection does not allow setting them otherwise - * - * @param string $tableName - */ - public function disablePrimaryKeys($tableName) - { - $this->getMetaData()->disablePrimaryKeys($tableName); - } - - /** - * Reenables primary keys after they have been disabled - * - * @param string $tableName - */ - public function enablePrimaryKeys($tableName) - { - $this->getMetaData()->enablePrimaryKeys($tableName); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/FilteredDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/FilteredDataSet.php deleted file mode 100644 index 6db6e4c..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/FilteredDataSet.php +++ /dev/null @@ -1,84 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides access to a database instance as a data set. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_FilteredDataSet extends PHPUnit_Extensions_Database_DB_DataSet -{ - - /** - * @var Array - */ - protected $tableNames; - - /** - * Creates a new dataset using the given database connection. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection - */ - public function __construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection, Array $tableNames) - { - parent::__construct($databaseConnection); - $this->tableNames = $tableNames; - } - - /** - * Returns a list of table names for the database - * - * @return Array - */ - public function getTableNames() - { - return $this->tableNames; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IDatabaseConnection.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IDatabaseConnection.php deleted file mode 100644 index 2e33d35..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IDatabaseConnection.php +++ /dev/null @@ -1,150 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface for communicating with a database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DB_IDatabaseConnection -{ - - /** - * Close this connection. - */ - public function close(); - - /** - * Creates a dataset containing the specified table names. If no table - * names are specified then it will created a dataset over the entire - * database. - * - * @param array $tableNames - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - */ - public function createDataSet(Array $tableNames = NULL); - - /** - * Creates a table with the result of the specified SQL statement. - * - * @param string $resultName - * @param string $sql - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function createQueryTable($resultName, $sql); - - /** - * Returns a PDO Connection - * - * @return PDO - */ - public function getConnection(); - - /** - * Returns a database metadata object that can be used to retrieve table - * meta data from the database. - * - * @return PHPUnit_Extensions_Database_DB_IMetaData - */ - public function getMetaData(); - - /** - * Returns the number of rows in the given table. You can specify an - * optional where clause to return a subset of the table. - * - * @param string $tableName - * @param string $whereClause - * @param int - */ - public function getRowCount($tableName, $whereClause = NULL); - - /** - * Returns the schema for the connection. - * - * @return string - */ - public function getSchema(); - - /** - * Returns a quoted schema object. (table name, column name, etc) - * - * @param string $object - * @return string - */ - public function quoteSchemaObject($object); - - /** - * Returns the command used to truncate a table. - * - * @return string - */ - public function getTruncateCommand(); - - /** - * Returns true if the connection allows cascading - * - * @return bool - */ - public function allowsCascading(); - - /** - * Disables primary keys if connection does not allow setting them otherwise - * - * @param string $tableName - */ - public function disablePrimaryKeys($tableName); - - /** - * Reenables primary keys after they have been disabled - * - * @param string $tableName - */ - public function enablePrimaryKeys($tableName); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IMetaData.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IMetaData.php deleted file mode 100644 index e91e391..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/IMetaData.php +++ /dev/null @@ -1,118 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface for retreiving metadata from a database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DB_IMetaData -{ - /** - * Returns an array containing the names of all the tables in the database. - * - * @return array - */ - public function getTableNames(); - - /** - * Returns an array containing the names of all the columns in the - * $tableName table, - * - * @param string $tableName - * @return array - */ - public function getTableColumns($tableName); - - /** - * Returns an array containing the names of all the primary key columns in - * the $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTablePrimaryKeys($tableName); - - /** - * Returns the name of the default schema. - * - * @return string - */ - public function getSchema(); - - /** - * Returns a quoted schema object. (table name, column name, etc) - * - * @param string $object - * @return string - */ - public function quoteSchemaObject($object); - - /** - * Returns true if the rdbms allows cascading - * - * @return bool - */ - public function allowsCascading(); - - /** - * Disables primary keys if rdbms does not allow setting them otherwise - * - * @param string $tableName - */ - public function disablePrimaryKeys($tableName); - - /** - * Reenables primary keys after they have been disabled - * - * @param string $tableName - */ - public function enablePrimaryKeys($tableName); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData.php deleted file mode 100644 index cd435a4..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData.php +++ /dev/null @@ -1,247 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic constructor for all meta data classes and a factory for - * generating the appropriate meta data class. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_DB_MetaData implements PHPUnit_Extensions_Database_DB_IMetaData -{ - protected static $metaDataClassMap = array( - 'pgsql' => 'PHPUnit_Extensions_Database_DB_MetaData_PgSQL', - 'mysql' => 'PHPUnit_Extensions_Database_DB_MetaData_MySQL', - 'oci' => 'PHPUnit_Extensions_Database_DB_MetaData_Oci', - 'sqlite' => 'PHPUnit_Extensions_Database_DB_MetaData_Sqlite', - 'sqlite2'=> 'PHPUnit_Extensions_Database_DB_MetaData_Sqlite', - 'sqlsrv' => 'PHPUnit_Extensions_Database_DB_MetaData_SqlSrv' - ); - - /** - * The PDO connection used to retreive database meta data - * - * @var PDO - */ - protected $pdo; - - /** - * The default schema name for the meta data object. - * - * @var string - */ - protected $schema; - - /** - * The character used to quote schema objects. - */ - protected $schemaObjectQuoteChar = '"'; - - /** - * The command used to perform a TRUNCATE operation. - */ - protected $truncateCommand = 'TRUNCATE'; - - /** - * Creates a new database meta data object using the given pdo connection - * and schema name. - * - * @param PDO $pdo - * @param string $schema - */ - public final function __construct(PDO $pdo, $schema = '') - { - $this->pdo = $pdo; - $this->schema = $schema; - } - - /** - * Creates a meta data object based on the driver of given $pdo object and - * $schema name. - * - * @param PDO $pdo - * @param string $schema - * @return PHPUnit_Extensions_Database_DB_MetaData - */ - public static function createMetaData(PDO $pdo, $schema = '') - { - $driverName = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME); - if (isset(self::$metaDataClassMap[$driverName])) { - $className = self::$metaDataClassMap[$driverName]; - - if ($className instanceof ReflectionClass) { - return $className->newInstance($pdo, $schema); - } else { - return self::registerClassWithDriver($className, $driverName)->newInstance($pdo, $schema); - } - } else { - throw new PHPUnit_Extensions_Database_Exception("Could not find a meta data driver for {$driverName} pdo driver."); - } - } - - /** - * Validates and registers the given $className with the given $pdoDriver. - * It should be noted that this function will not attempt to include / - * require the file. The $pdoDriver can be determined by the value of the - * PDO::ATTR_DRIVER_NAME attribute for a pdo object. - * - * A reflection of the $className is returned. - * - * @param string $className - * @param string $pdoDriver - * @return ReflectionClass - */ - public static function registerClassWithDriver($className, $pdoDriver) - { - if (!class_exists($className)) { - throw new PHPUnit_Extensions_Database_Exception("Specified class for {$pdoDriver} driver ({$className}) does not exist."); - } - - $reflection = new ReflectionClass($className); - if ($reflection->isSubclassOf('PHPUnit_Extensions_Database_DB_MetaData')) { - return self::$metaDataClassMap[$pdoDriver] = $reflection; - } else { - throw new PHPUnit_Extensions_Database_Exception("Specified class for {$pdoDriver} driver ({$className}) does not extend PHPUnit_Extensions_Database_DB_MetaData."); - } - } - - /** - * Returns the schema for the connection. - * - * @return string - */ - public function getSchema() - { - return $this->schema; - } - - /** - * Returns a quoted schema object. (table name, column name, etc) - * - * @param string $object - * @return string - */ - public function quoteSchemaObject($object) - { - $parts = explode('.', $object); - $quotedParts = array(); - - foreach ($parts as $part) { - $quotedParts[] = $this->schemaObjectQuoteChar . - str_replace($this->schemaObjectQuoteChar, $this->schemaObjectQuoteChar.$this->schemaObjectQuoteChar, $part). - $this->schemaObjectQuoteChar; - } - - return implode('.', $quotedParts); - } - - /** - * Seperates the schema and the table from a fully qualified table name. - * - * Returns an associative array containing the 'schema' and the 'table'. - * - * @param string $fullTableName - * @return array - */ - public function splitTableName($fullTableName) - { - if (($dot = strpos($fullTableName, '.')) !== FALSE) { - return array( - 'schema' => substr($fullTableName, 0, $dot), - 'table' => substr($fullTableName, $dot + 1) - ); - } else { - return array( - 'schema' => NULL, - 'table' => $fullTableName - ); - } - } - - /** - * Returns the command for the database to truncate a table. - * - * @return string - */ - public function getTruncateCommand() - { - return $this->truncateCommand; - } - - /** - * Returns true if the rdbms allows cascading - * - * @return bool - */ - public function allowsCascading() - { - return FALSE; - } - - /** - * Disables primary keys if the rdbms does not allow setting them otherwise - * - * @param string $tableName - */ - public function disablePrimaryKeys($tableName) - { - return; - } - - /** - * Reenables primary keys after they have been disabled - * - * @param string $tableName - */ - public function enablePrimaryKeys($tableName) - { - return; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/InformationSchema.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/InformationSchema.php deleted file mode 100644 index 3d1c9bc..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/InformationSchema.php +++ /dev/null @@ -1,174 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides functionality to retrieve meta data from a database with information_schema support. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_MetaData_InformationSchema extends PHPUnit_Extensions_Database_DB_MetaData -{ - - protected $columns = array(); - - protected $keys = array(); - - /** - * Returns an array containing the names of all the tables in the database. - * - * @return array - */ - public function getTableNames() - { - $query = " - SELECT DISTINCT - TABLE_NAME - FROM INFORMATION_SCHEMA.TABLES - WHERE - TABLE_TYPE='BASE TABLE' AND - TABLE_SCHEMA = ? - ORDER BY TABLE_NAME - "; - - $statement = $this->pdo->prepare($query); - $statement->execute(array($this->getSchema())); - - $tableNames = array(); - while ($tableName = $statement->fetchColumn(0)) { - $tableNames[] = $tableName; - } - - return $tableNames; - } - - /** - * Returns an array containing the names of all the columns in the - * $tableName table, - * - * @param string $tableName - * @return array - */ - public function getTableColumns($tableName) - { - if (!isset($this->columns[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->columns[$tableName]; - } - - /** - * Returns an array containing the names of all the primary key columns in - * the $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTablePrimaryKeys($tableName) - { - if (!isset($this->keys[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->keys[$tableName]; - } - - /** - * Loads column info from a sqlite database. - * - * @param string $tableName - */ - protected function loadColumnInfo($tableName) - { - $this->columns[$tableName] = array(); - $this->keys[$tableName] = array(); - - $columnQuery = " - SELECT DISTINCT - COLUMN_NAME - FROM INFORMATION_SCHEMA.COLUMNS - WHERE - TABLE_NAME = ? AND - TABLE_SCHEMA = ? - ORDER BY ORDINAL_POSITION - "; - - $columnStatement = $this->pdo->prepare($columnQuery); - $columnStatement->execute(array($tableName, $this->getSchema())); - - while ($columName = $columnStatement->fetchColumn(0)) { - $this->columns[$tableName][] = $columName; - } - - $keyQuery = " - SELECT - KCU.COLUMN_NAME - FROM - INFORMATION_SCHEMA.TABLE_CONSTRAINTS as TC, - INFORMATION_SCHEMA.KEY_COLUMN_USAGE as KCU - WHERE - TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND - TC.TABLE_NAME = KCU.TABLE_NAME AND - TC.TABLE_SCHEMA = KCU.TABLE_SCHEMA AND - TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND - TC.TABLE_NAME = ? AND - TC.TABLE_SCHEMA = ? - ORDER BY - KCU.ORDINAL_POSITION ASC - "; - - $keyStatement = $this->pdo->prepare($keyQuery); - $keyStatement->execute(array($tableName, $this->getSchema())); - - while ($columName = $keyStatement->fetchColumn(0)) { - $this->keys[$tableName][] = $columName; - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/MySQL.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/MySQL.php deleted file mode 100644 index b16b272..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/MySQL.php +++ /dev/null @@ -1,123 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides functionality to retrieve meta data from a MySQL database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_MetaData_MySQL extends PHPUnit_Extensions_Database_DB_MetaData -{ - protected $schemaObjectQuoteChar = '`'; - - /** - * Returns an array containing the names of all the tables in the database. - * - * @return array - */ - public function getTableNames() - { - $query = 'SHOW TABLES'; - $statement = $this->pdo->prepare($query); - $statement->execute(); - - $tableNames = array(); - while (($tableName = $statement->fetchColumn(0))) { - $tableNames[] = $tableName; - } - - return $tableNames; - } - - /** - * Returns an array containing the names of all the columns in the - * $tableName table, - * - * @param string $tableName - * @return array - */ - public function getTableColumns($tableName) - { - $query = 'SHOW COLUMNS FROM ' . $this->quoteSchemaObject($tableName); - $statement = $this->pdo->prepare($query); - $statement->execute(); - - $columnNames = array(); - while (($columnName = $statement->fetchColumn(0))) { - $columnNames[] = $columnName; - } - - return $columnNames; - } - - /** - * Returns an array containing the names of all the primary key columns in - * the $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTablePrimaryKeys($tableName) - { - $query = 'SHOW INDEX FROM ' . $this->quoteSchemaObject($tableName); - $statement = $this->pdo->prepare($query); - $statement->execute(); - $statement->setFetchMode(PDO::FETCH_ASSOC); - - $columnNames = array(); - while (($column = $statement->fetch())) { - if ($column['Key_name'] == 'PRIMARY') { - $columnNames[] = $column['Column_name']; - } - } - - return $columnNames; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Oci.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Oci.php deleted file mode 100644 index c991a3f..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Oci.php +++ /dev/null @@ -1,180 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Trond Hansen - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 3.2.3 - */ - -/** - * Provides functionality to retrieve meta data from an Oracle database. - * - * @package DbUnit - * @author Trond Hansen - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 3.2.3 - */ -class PHPUnit_Extensions_Database_DB_MetaData_Oci extends PHPUnit_Extensions_Database_DB_MetaData -{ - /** - * No character used to quote schema objects. - * @var string - */ - protected $schemaObjectQuoteChar = ''; - - /** - * The command used to perform a TRUNCATE operation. - * @var string - */ - protected $truncateCommand = 'TRUNCATE TABLE'; - - /** - * @var array - */ - protected $columns = array(); - - /** - * @var array - */ - protected $keys = array(); - - /** - * Returns an array containing the names of all the tables in the database. - * - * @return array - */ - public function getTableNames() - { - $tableNames = array(); - - $query = "SELECT table_name - FROM cat - WHERE table_type='TABLE' - ORDER BY table_name"; - - $result = $this->pdo->query($query); - - while ($tableName = $result->fetchColumn(0)) { - $tableNames[] = $tableName; - } - - return $tableNames; - } - - /** - * Returns an array containing the names of all the columns in the - * $tableName table, - * - * @param string $tableName - * @return array - */ - public function getTableColumns($tableName) - { - if (!isset($this->columns[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->columns[$tableName]; - } - - /** - * Returns an array containing the names of all the primary key columns in - * the $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTablePrimaryKeys($tableName) - { - if (!isset($this->keys[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->keys[$tableName]; - } - - /** - * Loads column info from a oracle database. - * - * @param string $tableName - */ - protected function loadColumnInfo($tableName) - { - $ownerQuery = ''; - $conOwnerQuery = ''; - $tableParts = $this->splitTableName($tableName); - - $this->columns[$tableName] = array(); - $this->keys[$tableName] = array(); - - if (!empty($tableParts['schema'])) - { - $ownerQuery = " AND OWNER = '{$tableParts['schema']}'"; - $conOwnerQuery = " AND a.owner = '{$tableParts['schema']}'"; - } - - $query = "SELECT DISTINCT COLUMN_NAME - FROM USER_TAB_COLUMNS - WHERE TABLE_NAME='".$tableParts['table']."' - $ownerQuery - ORDER BY COLUMN_NAME"; - - $result = $this->pdo->query($query); - - while ($columnName = $result->fetchColumn(0)) { - $this->columns[$tableName][] = $columnName; - } - - $keyQuery = "SELECT b.column_name - FROM user_constraints a, user_cons_columns b - WHERE a.constraint_type='P' - AND a.constraint_name=b.constraint_name - $conOwnerQuery - AND a.table_name = '".$tableParts['table']."' "; - - $result = $this->pdo->query($keyQuery); - - while ($columnName = $result->fetchColumn(0)) { - $this->keys[$tableName][] = $columnName; - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/PgSQL.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/PgSQL.php deleted file mode 100644 index c182c43..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/PgSQL.php +++ /dev/null @@ -1,193 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides functionality to retrieve meta data from a PostgreSQL database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_MetaData_PgSQL extends PHPUnit_Extensions_Database_DB_MetaData -{ - - /** - * Returns an array containing the names of all the tables in the database. - * - * @return array - */ - public function getTableNames() - { - $query = " - SELECT DISTINCT - TABLE_NAME - FROM INFORMATION_SCHEMA.TABLES - WHERE - TABLE_TYPE='BASE TABLE' AND - TABLE_SCHEMA = ? - ORDER BY TABLE_NAME - "; - - $statement = $this->pdo->prepare($query); - $statement->execute(array($this->getSchema())); - - $tableNames = array(); - while ($tableName = $statement->fetchColumn(0)) { - $tableNames[] = $tableName; - } - - return $tableNames; - } - - /** - * Returns an array containing the names of all the columns in the - * $tableName table, - * - * @param string $tableName - * @return array - */ - public function getTableColumns($tableName) - { - if (!isset($this->columns[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->columns[$tableName]; - } - - /** - * Returns an array containing the names of all the primary key columns in - * the $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTablePrimaryKeys($tableName) - { - if (!isset($this->keys[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->keys[$tableName]; - } - - /** - * Loads column info from a database table. - * - * @param string $tableName - */ - protected function loadColumnInfo($tableName) - { - $this->columns[$tableName] = array(); - $this->keys[$tableName] = array(); - - $columnQuery = " - SELECT DISTINCT - COLUMN_NAME, ORDINAL_POSITION - FROM INFORMATION_SCHEMA.COLUMNS - WHERE - TABLE_NAME = ? AND - TABLE_SCHEMA = ? - ORDER BY ORDINAL_POSITION - "; - - $columnStatement = $this->pdo->prepare($columnQuery); - $columnStatement->execute(array($tableName, $this->getSchema())); - - while ($columName = $columnStatement->fetchColumn(0)) { - $this->columns[$tableName][] = $columName; - } - - $keyQuery = " - SELECT - KCU.COLUMN_NAME, - KCU.ORDINAL_POSITION - FROM - INFORMATION_SCHEMA.KEY_COLUMN_USAGE as KCU - LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS as TC - ON TC.TABLE_NAME = KCU.TABLE_NAME - WHERE - TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND - TC.TABLE_NAME = ? AND - TC.TABLE_SCHEMA = ? - ORDER BY - KCU.ORDINAL_POSITION ASC - "; - - $keyStatement = $this->pdo->prepare($keyQuery); - $keyStatement->execute(array($tableName, $this->getSchema())); - - while ($columName = $keyStatement->fetchColumn(0)) { - $this->keys[$tableName][] = $columName; - } - } - - /** - * Returns the schema for the connection. - * - * @return string - */ - public function getSchema() - { - if (empty($this->schema)) { - return 'public'; - } else { - return $this->schema; - } - } - - /** - * Returns true if the rdbms allows cascading - * - * @return bool - */ - public function allowsCascading() - { - return TRUE; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/SqlSrv.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/SqlSrv.php deleted file mode 100644 index 0c67d8d..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/SqlSrv.php +++ /dev/null @@ -1,172 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Nils Adermann - * @copyright 2002-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.1.0 - */ - -/** - * Provides functionality to retrieve meta data from a Microsoft SQL Server database. - * - * @package DbUnit - * @author Nils Adermann - * @copyright 2002-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.1.0 - */ -class PHPUnit_Extensions_Database_DB_MetaData_SqlSrv extends PHPUnit_Extensions_Database_DB_MetaData -{ - /** - * No character used to quote schema objects. - * @var string - */ - protected $schemaObjectQuoteChar = ''; - - /** - * The command used to perform a TRUNCATE operation. - * @var string - */ - protected $truncateCommand = 'TRUNCATE TABLE'; - - /** - * Returns an array containing the names of all the tables in the database. - * - * @return array - */ - public function getTableNames() - { - $query = "SELECT name - FROM sysobjects - WHERE type='U'"; - - $statement = $this->pdo->prepare($query); - $statement->execute(); - - $tableNames = array(); - while (($tableName = $statement->fetchColumn(0))) { - $tableNames[] = $tableName; - } - - return $tableNames; - } - - /** - * Returns an array containing the names of all the columns in the - * $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTableColumns($tableName) - { - $query = "SELECT c.name - FROM syscolumns c - LEFT JOIN sysobjects o ON c.id = o.id - WHERE o.name = '$tableName'"; - - $statement = $this->pdo->prepare($query); - $statement->execute(); - - $columnNames = array(); - while (($columnName = $statement->fetchColumn(0))) { - $columnNames[] = $columnName; - } - - return $columnNames; - } - - /** - * Returns an array containing the names of all the primary key columns in - * the $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTablePrimaryKeys($tableName) - { - $query = "EXEC sp_statistics '$tableName'"; - $statement = $this->pdo->prepare($query); - $statement->execute(); - $statement->setFetchMode(PDO::FETCH_ASSOC); - - $columnNames = array(); - while (($column = $statement->fetch())) { - if ($column['TYPE'] == 1) { - $columnNames[] = $column['COLUMN_NAME']; - } - } - - return $columnNames; - } - - /** - * Allow overwriting identities for the given table. - * - * @param string $tableName - */ - public function disablePrimaryKeys($tableName) - { - try { - $query = "SET IDENTITY_INSERT $tableName ON"; - $this->pdo->exec($query); - } - catch (PDOException $e) { - // ignore the error here - can happen if primary key is not an identity - } - } - - /** - * Reenable auto creation of identities for the given table. - * - * @param string $tableName - */ - public function enablePrimaryKeys($tableName) - { - try { - $query = "SET IDENTITY_INSERT $tableName OFF"; - $this->pdo->exec($query); - } - catch (PDOException $e) { - // ignore the error here - can happen if primary key is not an identity - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Sqlite.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Sqlite.php deleted file mode 100644 index dfc332c..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/MetaData/Sqlite.php +++ /dev/null @@ -1,143 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides functionality to retrieve meta data from an Sqlite database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_MetaData_Sqlite extends PHPUnit_Extensions_Database_DB_MetaData -{ - - protected $columns = array(); - - protected $keys = array(); - - protected $truncateCommand = 'DELETE FROM'; - /** - * Returns an array containing the names of all the tables in the database. - * - * @return array - */ - public function getTableNames() - { - $query = " - SELECT name - FROM sqlite_master - WHERE - type='table' AND - name <> 'sqlite_sequence' - ORDER BY name - "; - - $result = $this->pdo->query($query); - - while ($tableName = $result->fetchColumn(0)) { - $tableNames[] = $tableName; - } - - return $tableNames; - } - - /** - * Returns an array containing the names of all the columns in the - * $tableName table, - * - * @param string $tableName - * @return array - */ - public function getTableColumns($tableName) - { - if (!isset($this->columns[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->columns[$tableName]; - } - - /** - * Returns an array containing the names of all the primary key columns in - * the $tableName table. - * - * @param string $tableName - * @return array - */ - public function getTablePrimaryKeys($tableName) - { - if (!isset($this->keys[$tableName])) { - $this->loadColumnInfo($tableName); - } - - return $this->keys[$tableName]; - } - - /** - * Loads column info from a sqlite database. - * - * @param string $tableName - */ - protected function loadColumnInfo($tableName) - { - $query = "PRAGMA table_info('{$tableName}')"; - $statement = $this->pdo->query($query); - - /* @var $statement PDOStatement */ - $this->columns[$tableName] = array(); - $this->keys[$tableName] = array(); - - while ($columnData = $statement->fetch(PDO::FETCH_NUM)) { - $this->columns[$tableName][] = $columnData[1]; - - if ($columnData[5] == 1) { - $this->keys[$tableName][] = $columnData[1]; - } - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/ResultSetTable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/ResultSetTable.php deleted file mode 100644 index 896bd9b..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/ResultSetTable.php +++ /dev/null @@ -1,81 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides the functionality to represent a database result set as a DBUnit - * table. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @deprecated The PHPUnit_Extension_Database_DataSet_QueryTable should be used instead - * @see PHPUnit_Extension_Database_DataSet_QueryTable - * @see PHPUnit_Extension_Database_DataSet_QueryDataSet - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_ResultSetTable extends PHPUnit_Extensions_Database_DataSet_AbstractTable -{ - - /** - * Creates a new result set table. - * - * @param string $tableName - * @param PDOStatement $pdoStatement - */ - public function __construct($tableName, PDOStatement $pdoStatement) - { - $this->data = $pdoStatement->fetchAll(PDO::FETCH_ASSOC); - - if (count($this->data)) { - $columns = array_keys($this->data[0]); - } else { - $columns = array(); - } - - $this->setTableMetaData(new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($tableName, $columns)); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/Table.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/Table.php deleted file mode 100644 index a9bbf53..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/Table.php +++ /dev/null @@ -1,73 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides the functionality to represent a database table. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_Table extends PHPUnit_Extensions_Database_DataSet_AbstractTable -{ - - /** - * Creates a new database table object. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData, PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection) - { - $this->setTableMetaData($tableMetaData); - - $pdoStatement = $databaseConnection->getConnection()->prepare(PHPUnit_Extensions_Database_DB_DataSet::buildTableSelect($tableMetaData, $databaseConnection)); - $pdoStatement->execute(); - $this->data = $pdoStatement->fetchAll(PDO::FETCH_ASSOC); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableIterator.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableIterator.php deleted file mode 100644 index d58c01f..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableIterator.php +++ /dev/null @@ -1,165 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides iterative access to tables from a database instance. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_TableIterator implements PHPUnit_Extensions_Database_DataSet_ITableIterator -{ - - /** - * An array of tablenames. - * - * @var Array - */ - protected $tableNames; - - /** - * If this property is true then the tables will be iterated in reverse - * order. - * - * @var bool - */ - protected $reverse; - - /** - * The database dataset that this iterator iterates over. - * - * @var PHPUnit_Extensions_Database_DB_DataSet - */ - protected $dataSet; - - public function __construct($tableNames, PHPUnit_Extensions_Database_DB_DataSet $dataSet, $reverse = FALSE) - { - $this->tableNames = $tableNames; - $this->dataSet = $dataSet; - $this->reverse = $reverse; - - $this->rewind(); - } - - /** - * Returns the current table. - * - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function getTable() - { - return $this->current(); - } - - /** - * Returns the current table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData() - { - return $this->current()->getTableMetaData(); - } - - /** - * Returns the current table. - * - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function current() - { - $tableName = current($this->tableNames); - return $this->dataSet->getTable($tableName); - } - - /** - * Returns the name of the current table. - * - * @return string - */ - public function key() - { - return $this->current()->getTableMetaData()->getTableName(); - } - - /** - * advances to the next element. - * - */ - public function next() - { - if ($this->reverse) { - prev($this->tableNames); - } else { - next($this->tableNames); - } - } - - /** - * Rewinds to the first element - */ - public function rewind() - { - if ($this->reverse) { - end($this->tableNames); - } else { - reset($this->tableNames); - } - } - - /** - * Returns true if the current index is valid - * - * @return bool - */ - public function valid() - { - return (current($this->tableNames) !== FALSE); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableMetaData.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableMetaData.php deleted file mode 100644 index a56d170..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DB/TableMetaData.php +++ /dev/null @@ -1,65 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * This class loads a table metadata object with database metadata. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DB_TableMetaData extends PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData -{ - - public function __construct($tableName, PHPUnit_Extensions_Database_DB_IMetaData $databaseMetaData) - { - $this->tableName = $tableName; - $this->columns = $databaseMetaData->getTableColumns($tableName); - $this->primaryKeys = $databaseMetaData->getTablePrimaryKeys($tableName); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractDataSet.php deleted file mode 100644 index 30fcb54..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractDataSet.php +++ /dev/null @@ -1,171 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Implements the basic functionality of data sets. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_DataSet_AbstractDataSet implements PHPUnit_Extensions_Database_DataSet_IDataSet -{ - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected abstract function createIterator($reverse = FALSE); - - /** - * Returns an array of table names contained in the dataset. - * - * @return array - */ - public function getTableNames() - { - $tableNames = array(); - - foreach ($this->getIterator() as $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - $tableNames[] = $table->getTableMetaData()->getTableName(); - } - - return $tableNames; - } - - /** - * Returns a table meta data object for the given table. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData($tableName) - { - return $this->getTable($tableName)->getTableMetaData(); - } - - /** - * Returns a table object for the given table. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function getTable($tableName) - { - foreach ($this->getIterator() as $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - if ($table->getTableMetaData()->getTableName() == $tableName) { - return $table; - } - } - } - - /** - * Returns an iterator for all table objects in the given dataset. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - public function getIterator() - { - return $this->createIterator(); - } - - /** - * Returns a reverse iterator for all table objects in the given dataset. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - public function getReverseIterator() - { - return $this->createIterator(TRUE); - } - - /** - * Asserts that the given data set matches this data set. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_IDataSet $other) - { - $thisTableNames = $this->getTableNames(); - $otherTableNames = $other->getTableNames(); - - sort($thisTableNames); - sort($otherTableNames); - - if ($thisTableNames != $otherTableNames) { - return FALSE; - } - - foreach ($thisTableNames as $tableName) { - $table = $this->getTable($tableName); - - if (!$table->matches($other->getTable($tableName))) { - return FALSE; - } - } - - return TRUE; - } - - public function __toString() - { - $iterator = $this->getIterator(); - - $dataSetString = ''; - foreach ($iterator as $table) { - $dataSetString .= $table->__toString(); - } - - return $dataSetString; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTable.php deleted file mode 100644 index 95d322f..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTable.php +++ /dev/null @@ -1,223 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic functionality for dbunit tables - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_AbstractTable implements PHPUnit_Extensions_Database_DataSet_ITable -{ - - /** - * @var PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - protected $tableMetaData; - - /** - * A 2-dimensional array containing the data for this table. - * - * @var array - */ - protected $data; - - /** - * Sets the metadata for this table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData - * @deprecated - */ - protected function setTableMetaData(PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData) - { - $this->tableMetaData = $tableMetaData; - } - - /** - * Returns the table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData() - { - return $this->tableMetaData; - } - - /** - * Returns the number of rows in this table. - * - * @return int - */ - public function getRowCount() - { - return count($this->data); - } - - /** - * Returns the value for the given column on the given row. - * - * @param int $row - * @param int $column - * @todo reorganize this function to throw the exception first. - */ - public function getValue($row, $column) - { - if (isset($this->data[$row][$column])) { - return (string)$this->data[$row][$column]; - } else { - if (!in_array($column, $this->getTableMetaData()->getColumns()) || $this->getRowCount() <= $row) { - throw new InvalidArgumentException("The given row ({$row}) and column ({$column}) do not exist in table {$this->getTableMetaData()->getTableName()}"); - } else { - return NULL; - } - } - } - - /** - * Returns the an associative array keyed by columns for the given row. - * - * @param int $row - * @return array - */ - public function getRow($row) - { - if (isset($this->data[$row])) { - return $this->data[$row]; - } else { - if ($this->getRowCount() <= $row) { - throw new InvalidArgumentException("The given row ({$row}) does not exist in table {$this->getTableMetaData()->getTableName()}"); - } else { - return NULL; - } - } - } - - /** - * Asserts that the given table matches this table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_ITable $other) - { - $thisMetaData = $this->getTableMetaData(); - $otherMetaData = $other->getTableMetaData(); - - if (!$thisMetaData->matches($otherMetaData) || - $this->getRowCount() != $other->getRowCount()) { - return FALSE; - } - - $columns = $thisMetaData->getColumns(); - $rowCount = $this->getRowCount(); - - for ($i = 0; $i < $rowCount; $i++) { - foreach ($columns as $columnName) { - if ($this->getValue($i, $columnName) != $other->getValue($i, $columnName)) { - return FALSE; - } - } - } - - return TRUE; - } - - /** - * Checks if a given row is in the table - * - * @param array $row - * - * @return bool - */ - public function assertContainsRow(array $row) - { - return in_array($row, $this->data); - } - - public function __toString() - { - $columns = $this->getTableMetaData()->getColumns(); - $lineSeperator = str_repeat('+----------------------', count($columns)) . "+\n"; - $lineLength = strlen($lineSeperator) - 1; - - $tableString = $lineSeperator; - $tableString .= '| ' . str_pad($this->getTableMetaData()->getTableName(), $lineLength - 4, ' ', STR_PAD_RIGHT) . " |\n"; - $tableString .= $lineSeperator; - $tableString .= $this->rowToString($columns); - $tableString .= $lineSeperator; - - $rowCount = $this->getRowCount(); - - for ($i = 0; $i < $rowCount; $i++) { - $values = array(); - - foreach ($columns as $columnName) { - $values[] = $this->getValue($i, $columnName); - } - - $tableString .= $this->rowToString($values) . $lineSeperator; - } - - return "\n" . $tableString . "\n"; - } - - protected function rowToString(Array $row) - { - $rowString = ''; - - foreach ($row as $value) { - if (is_null($value)) { - $value = 'NULL'; - } - - $rowString .= '| ' . str_pad(substr($value, 0, 20), 20, ' ', STR_PAD_BOTH) . ' '; - } - - return $rowString . "|\n"; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTableMetaData.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTableMetaData.php deleted file mode 100644 index b174db2..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractTableMetaData.php +++ /dev/null @@ -1,122 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides basic functionality for table meta data. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_DataSet_AbstractTableMetaData implements PHPUnit_Extensions_Database_DataSet_ITableMetaData -{ - - /** - * The names of all columns in the table. - * - * @var Array - */ - protected $columns; - - /** - * The names of all the primary keys in the table. - * - * @var Array - */ - protected $primaryKeys; - - /** - * @var string - */ - protected $tableName; - - /** - * Returns the names of the columns in the table. - * - * @return array - */ - public function getColumns() - { - return $this->columns; - } - - /** - * Returns the names of the primary key columns in the table. - * - * @return array - */ - public function getPrimaryKeys() - { - return $this->primaryKeys; - } - - /** - * Returns the name of the table. - * - * @return string - */ - public function getTableName() - { - return $this->tableName; - } - - /** - * Asserts that the given tableMetaData matches this tableMetaData. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_ITableMetaData $other) - { - if ($this->getTableName() != $other->getTableName() || - $this->getColumns() != $other->getColumns()) { - return FALSE; - } - - return TRUE; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractXmlDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractXmlDataSet.php deleted file mode 100644 index 1c81152..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/AbstractXmlDataSet.php +++ /dev/null @@ -1,151 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default implementation of a data set. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_DataSet_AbstractXmlDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - - /** - * @var array - */ - protected $tables; - - /** - * @var SimpleXmlElement - */ - protected $xmlFileContents; - - /** - * Creates a new dataset using the given tables. - * - * @param array $tables - */ - public function __construct($xmlFile) - { - if (!is_file($xmlFile)) { - throw new InvalidArgumentException( - "Could not find xml file: {$xmlFile}" - ); - } - - $errorReporting = error_reporting(0); - $libxmlErrorReporting = libxml_use_internal_errors(TRUE); - $this->xmlFileContents = simplexml_load_file($xmlFile); - - if (!$this->xmlFileContents) { - $message = ''; - - foreach (libxml_get_errors() as $error) { - $message .= $error->message; - } - - throw new RuntimeException($message); - } - - libxml_clear_errors(); - libxml_use_internal_errors($libxmlErrorReporting); - error_reporting($errorReporting); - - $tableColumns = array(); - $tableValues = array(); - - $this->getTableInfo($tableColumns, $tableValues); - $this->createTables($tableColumns, $tableValues); - } - - /** - * Reads the simple xml object and creates the appropriate tables and meta - * data for this dataset. - */ - protected abstract function getTableInfo(Array &$tableColumns, Array &$tableValues); - - protected function createTables(Array &$tableColumns, Array &$tableValues) - { - foreach ($tableValues as $tableName => $values) { - $table = $this->getOrCreateTable($tableName, $tableColumns[$tableName]); - foreach ($values as $value) { - $table->addRow($value); - } - } - } - - /** - * Returns the table with the matching name. If the table does not exist - * an empty one is created. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - protected function getOrCreateTable($tableName, $tableColumns) - { - if (empty($this->tables[$tableName])) { - $tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($tableName, $tableColumns); - $this->tables[$tableName] = new PHPUnit_Extensions_Database_DataSet_DefaultTable($tableMetaData); - } - - return $this->tables[$tableName]; - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected function createIterator($reverse = FALSE) - { - return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($this->tables, $reverse); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CompositeDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CompositeDataSet.php deleted file mode 100644 index 64e3e47..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CompositeDataSet.php +++ /dev/null @@ -1,120 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Creates Composite Datasets - * - * Allows for creating datasets from multiple sources (csv, query, xml, etc.) - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_CompositeDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - protected $dataSets = array(); - - /** - * Creates a new Composite dataset - * - * You can pass in any data set that implements PHPUnit_Extensions_Database_DataSet_IDataSet - * - * @param string $delimiter - * @param string $enclosure - * @param string $escape - */ - public function __construct(Array $dataSets) - { - foreach ($dataSets as $dataSet) - { - $this->addDataSet($dataSet); - } - } - - /** - * Adds a new data set to the composite. - * - * The dataset may not define tables that already exist in the composite. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet - */ - public function addDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - foreach ($dataSet->getTableNames() as $tableName) - { - if (in_array($tableName, $this->getTableNames())) - { - throw new InvalidArgumentException("DataSet contains a table that already exists: {$tableName}"); - } - } - - $this->dataSets[] = $dataSet; - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected function createIterator($reverse = FALSE) - { - $iterator = new AppendIterator(); - - $dataSets = $reverse ? array_reverse($this->dataSets) : $this->dataSets; - - foreach ($dataSets as $dataSet) - { - /* @var $dataSet PHPUnit_Extensions_Database_DataSet_IDataSet */ - $dataSetIterator = $reverse ? $dataSet->getReverseIterator() : $dataSet->getIterator(); - $iterator->append($dataSetIterator); - } - return $iterator; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CsvDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CsvDataSet.php deleted file mode 100644 index bb76058..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/CsvDataSet.php +++ /dev/null @@ -1,160 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Creates CsvDataSets. - * - * You can incrementally add CSV files as tables to your datasets - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_CsvDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - /** - * @var array - */ - protected $tables = array(); - - /** - * @var string - */ - protected $delimiter = ','; - - /** - * @var string - */ - protected $enclosure = '"'; - - /** - * @var string - */ - protected $escape = '"'; - - /** - * Creates a new CSV dataset - * - * You can pass in the parameters for how csv files will be read. - * - * @param string $delimiter - * @param string $enclosure - * @param string $escape - */ - public function __construct($delimiter = ',', $enclosure = '"', $escape = '"') - { - $this->delimiter = $delimiter; - $this->enclosure = $enclosure; - $this->escape = $escape; - } - - /** - * Adds a table to the dataset - * - * The table will be given the passed name. $csvFile should be a path to - * a valid csv file (based on the arguments passed to the constructor.) - * - * @param string $tableName - * @param string $csvFile - */ - public function addTable($tableName, $csvFile) - { - if (!is_file($csvFile)) { - throw new InvalidArgumentException("Could not find csv file: {$csvFile}"); - } - - if (!is_readable($csvFile)) { - throw new InvalidArgumentException("Could not read csv file: {$csvFile}"); - } - - $fh = fopen($csvFile, 'r'); - $columns = $this->getCsvRow($fh); - - if ($columns === FALSE) - { - throw new InvalidArgumentException("Could not determine the headers from the given file {$csvFile}"); - } - - $metaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($tableName, $columns); - $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($metaData); - - while (($row = $this->getCsvRow($fh)) !== FALSE) - { - $table->addRow(array_combine($columns, $row)); - } - - $this->tables[$tableName] = $table; - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected function createIterator($reverse = FALSE) - { - return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($this->tables, $reverse); - } - - /** - * Returns a row from the csv file in an indexed array. - * - * @param resource $fh - * @return array - */ - protected function getCsvRow($fh) - { - if (version_compare(PHP_VERSION, '5.3.0', '>')) { - return fgetcsv($fh, NULL, $this->delimiter, $this->enclosure, $this->escape); - } else { - return fgetcsv($fh, NULL, $this->delimiter, $this->enclosure); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DataSetFilter.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DataSetFilter.php deleted file mode 100644 index 5b5faff..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DataSetFilter.php +++ /dev/null @@ -1,196 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A dataset decorator that allows filtering out tables and table columns from - * results. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_DataSetFilter extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - - /** - * The dataset being decorated. - * @var PHPUnit_Extensions_Database_DataSet_IDataSet - */ - protected $originalDataSet; - - /** - * The tables to exclude from the data set. - * @var Array - */ - protected $excludeTables = array(); - - /** - * The tables to exclude from the data set. - * @var Array - */ - protected $includeTables = array(); - - /** - * The columns to exclude from the data set. - * @var Array - */ - protected $excludeColumns = array(); - - /** - * The columns to exclude from the data set. - * @var Array - */ - protected $includeColumns = array(); - - /** - * Creates a new filtered data set. - * - * The $exclude tables should be an associative array using table names as - * the key and an array of column names to exclude for the value. If you - * would like to exclude a full table set the value of the table's entry - * to the special string '*'. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $originalDataSet - * @param Array $excludeTables @deprecated use set* methods instead. - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_IDataSet $originalDataSet, array $excludeTables = array()) - { - $this->originalDataSet = $originalDataSet; - - $tables = array(); - foreach ($excludeTables as $tableName => $values) { - if (is_array($values)) { - $this->setExcludeColumnsForTable($tableName, $values); - } elseif ($values == '*') { - $tables[] = $tableName; - } else { - $this->setExcludeColumnsForTable($tableName, (array)$values); - } - } - - $this->addExcludeTables($tables); - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected function createIterator($reverse = FALSE) - { - $original_tables = $this->originalDataSet->getIterator($reverse); - $new_tables = array(); - - foreach ($original_tables as $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - $tableName = $table->getTableMetaData()->getTableName(); - - if ((!in_array($tableName, $this->includeTables) && !empty($this->includeTables)) || - in_array($tableName, $this->excludeTables) - ) { - continue; - } elseif (!empty($this->excludeColumns[$tableName]) || !empty($this->includeColumns[$tableName])) { - $new_table = new PHPUnit_Extensions_Database_DataSet_TableFilter($table); - - if (!empty($this->includeColumns[$tableName])) { - $new_table->addIncludeColumns($this->includeColumns[$tableName]); - } - - if (!empty($this->excludeColumns[$tableName])) { - $new_table->addExcludeColumns($this->excludeColumns[$tableName]); - } - - $new_tables[] = $new_table; - } else { - $new_tables[] = $table; - } - } - - return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($new_tables); - } - - /** - * Adds tables to be included in the data set. - * @param array $tables - */ - public function addIncludeTables(Array $tables) - { - $this->includeTables = array_unique(array_merge($this->includeTables, $tables)); - } - - /** - * Adds tables to be included in the data set. - * @param array $tables - */ - public function addExcludeTables(Array $tables) - { - $this->excludeTables = array_unique(array_merge($this->excludeTables, $tables)); - } - - /** - * Adds columns to include in the data set for the given table. - * @param string $table - * @param Array $columns - */ - public function setIncludeColumnsForTable($table, Array $columns) - { - $this->includeColumns[$table] = $columns; - } - - /** - * Adds columns to include in the data set for the given table. - * @param string $table - * @param Array $columns - */ - public function setExcludeColumnsForTable($table, Array $columns) - { - $this->excludeColumns[$table] = $columns; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultDataSet.php deleted file mode 100644 index 1a7a8bb..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultDataSet.php +++ /dev/null @@ -1,97 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default implementation of a data set. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_DefaultDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - - /** - * An array of ITable objects. - * - * @var array - */ - protected $tables; - - /** - * Creates a new dataset using the given tables. - * - * @param array $tables - */ - public function __construct(Array $tables = array()) - { - $this->tables = $tables; - } - - /** - * Adds a table to the dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - public function addTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - $this->tables[] = $table; - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected function createIterator($reverse = FALSE) - { - return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($this->tables, $reverse); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTable.php deleted file mode 100644 index 41d6231..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTable.php +++ /dev/null @@ -1,117 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides default table functionality. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_DefaultTable extends PHPUnit_Extensions_Database_DataSet_AbstractTable -{ - - /** - * Creates a new table object using the given $tableMetaData - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData) - { - $this->setTableMetaData($tableMetaData); - $this->data = array(); - } - - /** - * Adds a row to the table with optional values. - * - * @param array $values - */ - public function addRow($values = array()) - { - $this->data[] = array_merge( - array_fill_keys($this->getTableMetaData()->getColumns(), NULL), - $values - ); - } - - /** - * Adds the rows in the passed table to the current table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - public function addTableRows(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - $tableColumns = $this->getTableMetaData()->getColumns(); - $rowCount = $table->getRowCount(); - - for ($i = 0; $i < $rowCount; $i++) { - $newRow = array(); - foreach ($tableColumns as $columnName) { - $newRow[$columnName] = $table->getValue($i, $columnName); - } - $this->addRow($newRow); - } - } - - /** - * Sets the specified column of the specied row to the specified value. - * - * @param int $row - * @param string $column - * @param mixed $value - */ - public function setValue($row, $column, $value) - { - if (isset($this->data[$row])) { - $this->data[$row][$column] = $value; - } else { - throw new InvalidArgumentException("The row given does not exist."); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.php deleted file mode 100644 index d844ace..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.php +++ /dev/null @@ -1,161 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default table iterator - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_DefaultTableIterator implements PHPUnit_Extensions_Database_DataSet_ITableIterator -{ - /** - * An array of tables in the iterator. - * - * @var Array - */ - protected $tables; - - /** - * If this property is true then the tables will be iterated in reverse - * order. - * - * @var bool - */ - protected $reverse; - - /** - * Creates a new default table iterator object. - * - * @param array $tables - * @param bool $reverse - */ - public function __construct(Array $tables, $reverse = FALSE) - { - $this->tables = $tables; - $this->reverse = $reverse; - - $this->rewind(); - } - - /** - * Returns the current table. - * - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function getTable() - { - $this->current(); - } - - /** - * Returns the current table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData() - { - $this->current()->getTableMetaData(); - } - - /** - * Returns the current table. - * - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function current() - { - return current($this->tables); - } - - /** - * Returns the name of the current table. - * - * @return string - */ - public function key() - { - return $this->current()->getTableMetaData()->getTableName(); - } - - /** - * advances to the next element. - * - */ - public function next() - { - if ($this->reverse) { - prev($this->tables); - } else { - next($this->tables); - } - } - - /** - * Rewinds to the first element - */ - public function rewind() - { - if ($this->reverse) { - end($this->tables); - } else { - reset($this->tables); - } - } - - /** - * Returns true if the current index is valid - * - * @return bool - */ - public function valid() - { - return ($this->current() !== FALSE); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php deleted file mode 100644 index f210dac..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php +++ /dev/null @@ -1,80 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default implementation of table meta data - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData extends PHPUnit_Extensions_Database_DataSet_AbstractTableMetaData -{ - - /** - * Creates a new default table meta data object. - * - * @param string $tableName - * @param array $columns - * @param array $primaryKeys - */ - public function __construct($tableName, Array $columns, Array $primaryKeys = array()) - { - $this->tableName = $tableName; - $this->columns = $columns; - $this->primaryKeys = array(); - - foreach ($primaryKeys as $columnName) { - if (!in_array($columnName, $this->columns)) { - throw new InvalidArgumentException("Primary key column passed that is not in the column list."); - } else { - $this->primaryKeys[] = $columnName; - } - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.php deleted file mode 100644 index cc44516..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.php +++ /dev/null @@ -1,99 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default implementation of a data set. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractXmlDataSet -{ - - protected function getTableInfo(Array &$tableColumns, Array &$tableValues) - { - if ($this->xmlFileContents->getName() != 'dataset') { - throw new PHPUnit_Extensions_Database_Exception("The root element of a flat xml data set file must be called "); - } - - foreach ($this->xmlFileContents->children() as $row) { - $tableName = $row->getName(); - - if (!isset($tableColumns[$tableName])) { - $tableColumns[$tableName] = array(); - $tableValues[$tableName] = array(); - } - - $values = array(); - foreach ($row->attributes() as $name => $value) { - if (!in_array($name, $tableColumns[$tableName])) { - $tableColumns[$tableName][] = $name; - } - - $values[$name] = $value; - } - - if (count($values)) { - $tableValues[$tableName][] = $values; - } - } - } - - public static function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset, $filename) - { - $pers = new PHPUnit_Extensions_Database_DataSet_Persistors_FlatXml(); - $pers->setFileName($filename); - - try { - $pers->write($dataset); - } catch (RuntimeException $e) { - throw new PHPUnit_Framework_Exception(__METHOD__ . ' called with an unwritable file.'); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IDataSet.php deleted file mode 100644 index e4b868f..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IDataSet.php +++ /dev/null @@ -1,95 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface for creating and reading data from data sets. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DataSet_IDataSet extends IteratorAggregate -{ - - /** - * Returns an array of table names contained in the dataset. - * - * @return array - */ - public function getTableNames(); - - /** - * Returns a table meta data object for the given table. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData($tableName); - - /** - * Returns a table object for the given table. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function getTable($tableName); - - /** - * Returns a reverse iterator for all table objects in the given dataset. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - public function getReverseIterator(); - - /** - * Asserts that the given data set matches this data set. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_IDataSet $other); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IPersistable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IPersistable.php deleted file mode 100644 index dee264b..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/IPersistable.php +++ /dev/null @@ -1,66 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * An interface for persisting datasets - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DataSet_IPersistable -{ - /** - * Writes the given dataset - * - * The previous dataset will be overwritten. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - public function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ISpec.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ISpec.php deleted file mode 100644 index 47a8a2a..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ISpec.php +++ /dev/null @@ -1,65 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides an interface for creating data sets from data set spec strings. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DataSet_ISpec -{ - /** - * Creates a data set from a data set spec string. - * - * @param string $dataSetSpec - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - */ - public function getDataSet($dataSetSpec); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITable.php deleted file mode 100644 index bd4a781..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITable.php +++ /dev/null @@ -1,95 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface for creating and reading data from data sets. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DataSet_ITable -{ - - /** - * Returns the table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData(); - - /** - * Returns the number of rows in this table. - * - * @return int - */ - public function getRowCount(); - - /** - * Returns the value for the given column on the given row. - * - * @param int $row - * @param int $column - */ - public function getValue($row, $column); - - /** - * Returns the an associative array keyed by columns for the given row. - * - * @param int $row - * @return array - */ - public function getRow($row); - - /** - * Asserts that the given table matches this table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_ITable $other); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableIterator.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableIterator.php deleted file mode 100644 index 690b2bc..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableIterator.php +++ /dev/null @@ -1,72 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface for creating and reading data from data sets. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DataSet_ITableIterator extends Iterator -{ - - /** - * Returns the current table. - * - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function getTable(); - - /** - * Returns the current table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData(); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableMetaData.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableMetaData.php deleted file mode 100644 index 8f06c74..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ITableMetaData.php +++ /dev/null @@ -1,86 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface for returning table meta data. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DataSet_ITableMetaData -{ - - /** - * Returns the names of the columns in the table. - * - * @return array - */ - public function getColumns(); - - /** - * Returns the names of the primary key columns in the table. - * - * @return array - */ - public function getPrimaryKeys(); - - /** - * Returns the name of the table. - * - * @return string - */ - public function getTableName(); - - /** - * Asserts that the given tableMetaData matches this tableMetaData. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_ITableMetaData $other); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/MysqlXmlDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/MysqlXmlDataSet.php deleted file mode 100644 index e8c08b3..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/MysqlXmlDataSet.php +++ /dev/null @@ -1,148 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Matthew Turland - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Data set implementation for the output of mysqldump --xml. - * - * @package DbUnit - * @author Matthew Turland - * @copyright 2010 Matthew Turland - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractXmlDataSet -{ - protected function getTableInfo(array &$tableColumns, array &$tableValues) - { - if ($this->xmlFileContents->getName() != 'mysqldump') { - throw new PHPUnit_Extensions_Database_Exception('The root element of a MySQL XML data set file must be called '); - } - - foreach ($this->xmlFileContents->xpath('./database/table_data') as $tableElement) { - if (empty($tableElement['name'])) { - throw new PHPUnit_Extensions_Database_Exception(' elements must include a name attribute'); - } - - $tableName = (string)$tableElement['name']; - - if (!isset($tableColumns[$tableName])) { - $tableColumns[$tableName] = array(); - } - - if (!isset($tableValues[$tableName])) { - $tableValues[$tableName] = array(); - } - - foreach ($tableElement->xpath('./row') as $rowElement) { - $rowValues = array(); - - foreach ($rowElement->xpath('./field') as $columnElement) { - if (empty($columnElement['name'])) { - throw new PHPUnit_Extensions_Database_Exception(' element name attributes cannot be empty'); - } - - $columnName = (string)$columnElement['name']; - - if (!in_array($columnName, $tableColumns[$tableName])) { - $tableColumns[$tableName][] = $columnName; - } - } - - foreach ($tableColumns[$tableName] as $columnName) { - $fields = $rowElement->xpath('./field[@name="' . $columnName . '"]'); - $column = $fields[0]; - $attr = $column->attributes('http://www.w3.org/2001/XMLSchema-instance'); - - if (isset($attr['type']) && (string) $attr['type'] === 'xs:hexBinary') { - $columnValue = pack('H*',(string)$column); - } else { - $null = isset($column['nil']) || isset($attr[0]); - $columnValue = $null ? NULL : (string)$column; - } - - $rowValues[$columnName] = $columnValue; - - } - - $tableValues[$tableName][] = $rowValues; - } - } - - foreach ($this->xmlFileContents->xpath('./database/table_structure') as $tableElement) { - if (empty($tableElement['name'])) { - throw new PHPUnit_Extensions_Database_Exception(' elements must include a name attribute'); - } - - $tableName = (string) $tableElement['name']; - - foreach ($tableElement->xpath('./field') as $fieldElement) { - if (empty($fieldElement['Field'])) { - throw new PHPUnit_Extensions_Database_Exception(' elements must include a Field attribute'); - } - - $columnName = (string) $fieldElement['Field']; - - if (!in_array($columnName, $tableColumns[$tableName])) { - $tableColumns[$tableName][] = $columnName; - } - } - } - } - - public static function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset, $filename) - { - $pers = new PHPUnit_Extensions_Database_DataSet_Persistors_MysqlXml; - $pers->setFileName($filename); - - try { - $pers->write($dataset); - } - - catch (RuntimeException $e) { - throw new PHPUnit_Framework_Exception(__METHOD__ . ' called with an unwritable file.'); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Abstract.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Abstract.php deleted file mode 100644 index 5ae0f6b..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Abstract.php +++ /dev/null @@ -1,127 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * An abstract implementation of a dataset persistor. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_DataSet_Persistors_Abstract implements PHPUnit_Extensions_Database_DataSet_IPersistable -{ - public function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - $this->saveDataSet($dataset); - } - - /** - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - protected function saveDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - $this->startDataSet($dataset); - - foreach ($dataset as $table) { - $this->saveTable($table); - } - - $this->endDataSet($dataset); - } - - /** - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function saveTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - $rowCount = $table->getRowCount(); - $this->startTable($table); - - for ($i = 0; $i < $rowCount; $i++) { - $this->row($table->getRow($i), $table); - } - - $this->endTable($table); - } - - /** - * Override to save the start of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - abstract protected function startDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset); - - /** - * Override to save the end of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - abstract protected function endDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset); - - /** - * Override to save the start of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - abstract protected function startTable(PHPUnit_Extensions_Database_DataSet_ITable $table); - - /** - * Override to save the end of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - abstract protected function endTable(PHPUnit_Extensions_Database_DataSet_ITable $table); - - /** - * Override to save a table row. - * - * @param array $row - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - abstract protected function row(Array $row, PHPUnit_Extensions_Database_DataSet_ITable $table); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Factory.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Factory.php deleted file mode 100644 index d6135be..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Factory.php +++ /dev/null @@ -1,87 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Creates the appropriate Persistor based on a given type and spec. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Persistors_Factory -{ - /** - * Returns the persistor. - * - * @param string $type - * @param string $spec - * @return PHPUnit_Extensions_Database_DataSet_IPersistable - */ - public function getPersistorBySpec($type, $spec) - { - switch (strtolower($type)) { - case 'xml': - $xmlPersistor = new PHPUnit_Extensions_Database_DataSet_Persistors_Xml(); - $xmlPersistor->setFileName($spec); - return $xmlPersistor; - - case 'flatxml': - $flatXmlPersistor = new PHPUnit_Extensions_Database_DataSet_Persistors_FlatXml(); - $flatXmlPersistor->setFileName($spec); - return $flatXmlPersistor; - - case 'yaml': - $yamlPersistor = new PHPUnit_Extensions_Database_DataSet_Persistors_Yaml(); - $yamlPersistor->setFileName($spec); - return $yamlPersistor; - - default: - throw new PHPUnit_Extensions_Database_Exception("I don't know what you want from me. PERSISTOR"); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/FlatXml.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/FlatXml.php deleted file mode 100644 index 9a2b5e7..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/FlatXml.php +++ /dev/null @@ -1,147 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A Flat XML dataset persistor. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Persistors_FlatXml extends PHPUnit_Extensions_Database_DataSet_Persistors_Abstract -{ - /** - * @var string - */ - protected $filename; - - /** - * @var resource - */ - protected $fh; - - /** - * Sets the filename that this persistor will save to. - * - * @param string $filename - */ - public function setFileName($filename) - { - $this->filename = $filename; - } - - /** - * Override to save the start of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - protected function startDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - $this->fh = fopen($this->filename, 'w'); - - if ($this->fh === FALSE) { - throw new PHPUnit_Framework_Exception( - "Could not open {$this->filename} for writing see " . __CLASS__ . "::setFileName()" - ); - } - - fwrite($this->fh, "\n"); - fwrite($this->fh, "\n"); - } - - /** - * Override to save the end of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - protected function endDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - fwrite($this->fh, "\n"); - } - - /** - * Override to save the start of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function startTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - if ($table->getRowCount() == 0) { - fwrite($this->fh, "\t<{$table->getTableMetaData()->getTableName()} />\n"); - } - } - - /** - * Override to save the end of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function endTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - //do nothing - } - - /** - * Override to save a table row. - * - * @param array $row - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function row(Array $row, PHPUnit_Extensions_Database_DataSet_ITable $table) - { - fwrite($this->fh, "\t<{$table->getTableMetaData()->getTableName()}\n"); - - foreach ($table->getTableMetaData()->getColumns() as $columnName) { - if (isset($row[$columnName])) { - fwrite($this->fh, "\t\t{$columnName}=\"". htmlspecialchars($row[$columnName]) . "\"\n"); - } - } - - fwrite($this->fh, "\t/>\n"); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/MysqlXml.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/MysqlXml.php deleted file mode 100644 index 26de9ae..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/MysqlXml.php +++ /dev/null @@ -1,165 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Matthew Turland - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A MySQL XML dataset persistor. - * - * @package DbUnit - * @author Matthew Turland - * @copyright 2010 Matthew Turland - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Persistors_MysqlXml extends PHPUnit_Extensions_Database_DataSet_Persistors_Abstract -{ - /** - * @var string - */ - protected $filename; - - /** - * @var string - */ - protected $database; - - /** - * @var resource - */ - protected $fh; - - /** - * Sets the filename that this persistor will save to. - * - * @param string $filename - */ - public function setFileName($filename) - { - $this->filename = $filename; - } - - /** - * Sets the name of the database. - * - * @param string $database - */ - public function setDatabase($database) - { - $this->database = $database; - } - - /** - * Override to save the start of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - protected function startDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - $this->fh = fopen($this->filename, 'w'); - - if ($this->fh === FALSE) { - throw new PHPUnit_Framework_Exception( - "Could not open {$this->filename} for writing see " . __CLASS__ . "::setFileName()" - ); - } - - fwrite($this->fh, '' . "\n"); - fwrite($this->fh, '' . "\n"); - fwrite($this->fh, '' . "\n"); - } - - /** - * Override to save the end of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - protected function endDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - fwrite($this->fh, '' . "\n"); - fwrite($this->fh, '' . "\n"); - } - - /** - * Override to save the start of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function startTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - fwrite($this->fh, "\t" . '' . "\n"); - } - - /** - * Override to save the end of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function endTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - fwrite($this->fh, "\t" . '' . "\n"); - } - - /** - * Override to save a table row. - * - * @param array $row - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function row(Array $row, PHPUnit_Extensions_Database_DataSet_ITable $table) - { - fwrite($this->fh, "\t" . '' . "\n"); - - foreach ($table->getTableMetaData()->getColumns() as $columnName) { - fwrite($this->fh, "\t\t" . 'fh, '>' . htmlspecialchars($row[$columnName]) . '' . "\n"); - } else { - fwrite($this->fh, ' xsi:nil="true" />' . "\n"); - } - } - - fwrite($this->fh, "\t" . '' . "\n"); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Xml.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Xml.php deleted file mode 100644 index fccc2c9..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Xml.php +++ /dev/null @@ -1,151 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A XML dataset persistor. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Persistors_Xml extends PHPUnit_Extensions_Database_DataSet_Persistors_Abstract -{ - /** - * @var string - */ - protected $filename; - - /** - * @var resource - */ - protected $fh; - - /** - * Sets the filename that this persistor will save to. - * - * @param string $filename - */ - public function setFileName($filename) - { - $this->filename = $filename; - } - - /** - * Override to save the start of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - protected function startDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - $this->fh = fopen($this->filename, 'w'); - - if ($this->fh === FALSE) { - throw new PHPUnit_Framework_Exception( - "Could not open {$this->filename} for writing see " . __CLASS__ . "::setFileName()" - ); - } - - fwrite($this->fh, "\n"); - fwrite($this->fh, "\n"); - } - - /** - * Override to save the end of a dataset. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - protected function endDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - fwrite($this->fh, "\n"); - } - - /** - * Override to save the start of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function startTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - fwrite($this->fh, "\tgetTableMetaData()->getTableName()}\">\n"); - - foreach ($table->getTableMetaData()->getColumns() as $columnName) { - fwrite($this->fh, "\t\t{$columnName}\n"); - } - } - - /** - * Override to save the end of a table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function endTable(PHPUnit_Extensions_Database_DataSet_ITable $table) - { - fwrite($this->fh, "\t
\n"); - } - - /** - * Override to save a table row. - * - * @param array $row - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - */ - protected function row(Array $row, PHPUnit_Extensions_Database_DataSet_ITable $table) - { - fwrite($this->fh, "\t\t\n"); - - foreach ($table->getTableMetaData()->getColumns() as $columnName) { - if (isset($row[$columnName])) { - fwrite($this->fh, "\t\t\t" . htmlspecialchars($row[$columnName]) . "\n"); - } else { - fwrite($this->fh, "\t\t\t\n"); - } - } - - fwrite($this->fh, "\t\t\n"); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.php deleted file mode 100644 index cc4bb2d..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.php +++ /dev/null @@ -1,109 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A yaml dataset persistor - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Persistors_Yaml implements PHPUnit_Extensions_Database_DataSet_IPersistable -{ - /** - * @var string - */ - protected $filename; - - /** - * Sets the filename that this persistor will save to. - * - * @param string $filename - */ - public function setFileName($filename) - { - $this->filename = $filename; - } - - /** - * Writes the dataset to a yaml file - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - */ - public function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset) - { - $phpArr = array(); - $emptyTables = array(); - - foreach ($dataset as $table) { - $tableName = $table->getTableMetaData()->getTableName(); - $rowCount = $table->getRowCount(); - - if (!$rowCount) { - $emptyTables[] = $tableName; - continue; - } - - $phpArr[$tableName] = array(); - - for ($i = 0; $i < $rowCount; $i++) { - $phpArr[$tableName][] = $table->getRow($i); - } - } - - $emptyTablesAsString = ''; - - if (count($emptyTables)) { - $emptyTablesAsString = implode(":\n", $emptyTables) . ":\n\n"; - } - - file_put_contents( - $this->filename, sfYaml::dump($phpArr, 3) . $emptyTablesAsString - ); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryDataSet.php deleted file mode 100644 index 4cd091b..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryDataSet.php +++ /dev/null @@ -1,128 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides access to a database instance as a data set. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_QueryDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - - /** - * An array of ITable objects. - * - * @var array - */ - protected $tables = array(); - - /** - * The database connection this dataset is using. - * - * @var PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - protected $databaseConnection; - - /** - * Creates a new dataset using the given database connection. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection - */ - public function __construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection) - { - $this->databaseConnection = $databaseConnection; - } - - public function addTable($tableName, $query = NULL) - { - if ($query === NULL) { - $query = 'SELECT * FROM ' . $tableName; - } - - $this->tables[$tableName] = new PHPUnit_Extensions_Database_DataSet_QueryTable($tableName, $query, $this->databaseConnection); - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DB_TableIterator - */ - protected function createIterator($reverse = FALSE) - { - return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($this->tables, $reverse); - } - - /** - * Returns a table object for the given table. - * - * @param string $tableName - * @return PHPUnit_Extensions_Database_DB_Table - */ - public function getTable($tableName) - { - if (!isset($this->tables[$tableName])) { - throw new InvalidArgumentException("$tableName is not a table in the current database."); - } - - return $this->tables[$tableName]; - } - - /** - * Returns a list of table names for the database - * - * @return Array - */ - public function getTableNames() - { - return array_keys($this->tables); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryTable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryTable.php deleted file mode 100644 index bdd2e49..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/QueryTable.php +++ /dev/null @@ -1,177 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides the functionality to represent a database table. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_QueryTable extends PHPUnit_Extensions_Database_DataSet_AbstractTable -{ - /** - * @var string - */ - protected $query; - - /** - * @var PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - protected $databaseConnection; - - /** - * @var string - */ - protected $tableName; - - /** - * Creates a new database query table object. - * - * @param string $table_name - * @param string $query - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection - */ - public function __construct($tableName, $query, PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection) - { - $this->query = $query; - $this->databaseConnection = $databaseConnection; - $this->tableName = $tableName; - } - - /** - * Returns the table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData() - { - $this->createTableMetaData(); - return parent::getTableMetaData(); - } - - /** - * Returns the number of rows in this table. - * - * @return int - */ - public function getRowCount() - { - $this->loadData(); - return parent::getRowCount(); - } - - /** - * Returns the value for the given column on the given row. - * - * @param int $row - * @param int $column - */ - public function getValue($row, $column) - { - $this->loadData(); - return parent::getValue($row, $column); - } - - /** - * Returns the an associative array keyed by columns for the given row. - * - * @param int $row - * @return array - */ - public function getRow($row) - { - $this->loadData(); - return parent::getRow($row); - } - - /** - * Asserts that the given table matches this table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_ITable $other) - { - $this->loadData(); - return parent::matches($other); - } - - protected function loadData() - { - if ($this->data === NULL) { - $pdoStatement = $this->databaseConnection->getConnection()->query($this->query); - $this->data = $pdoStatement->fetchAll(PDO::FETCH_ASSOC); - } - } - - protected function createTableMetaData() - { - if ($this->tableMetaData === NULL) - { - $this->loadData(); - - // if some rows are in the table - $columns = array(); - if (isset($this->data[0])) - // get column names from data - $columns = array_keys($this->data[0]); - else { - // if no rows found, get column names from database - $pdoStatement = $this->databaseConnection->getConnection()->prepare("SELECT column_name FROM information_schema.COLUMNS WHERE table_schema=:schema AND table_name=:table"); - $pdoStatement->execute(array( - "table" => $this->tableName, - "schema" => $this->databaseConnection->getSchema() - )); - - $columns = $pdoStatement->fetchAll(PDO::FETCH_COLUMN, 0); - } - // create metadata - $this->tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($this->tableName, $columns); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php deleted file mode 100644 index f0a3619..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php +++ /dev/null @@ -1,129 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Allows for replacing arbitrary values or portions of values with new data. - * - * A usage for this is replacing all values == '[NULL'] with a true NULL value - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_ReplacementDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_IDataSet - */ - protected $dataSet; - - /** - * @var array - */ - protected $fullReplacements; - - /** - * @var array - */ - protected $subStrReplacements; - - /** - * Creates a new replacement dataset - * - * You can pass in any data set that implements PHPUnit_Extensions_Database_DataSet_IDataSet - * - * @param string $delimiter - * @param string $enclosure - * @param string $escape - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet, Array $fullReplacements = array(), Array $subStrReplacements = array()) - { - $this->dataSet = $dataSet; - $this->fullReplacements = $fullReplacements; - $this->subStrReplacements = $subStrReplacements; - } - - /** - * Adds a new full replacement - * - * Full replacements will only replace values if the FULL value is a match - * - * @param string $value - * @param string $replacement - */ - public function addFullReplacement($value, $replacement) - { - $this->fullReplacements[$value] = $replacement; - } - - /** - * Adds a new substr replacement - * - * Substr replacements will replace all occurances of the substr in every column - * - * @param string $value - * @param string $replacement - */ - public function addSubStrReplacement($value, $replacement) - { - $this->subStrReplacements[$value] = $replacement; - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected function createIterator($reverse = FALSE) - { - $innerIterator = $reverse ? $this->dataSet->getReverseIterator() : $this->dataSet->getIterator(); - return new PHPUnit_Extensions_Database_DataSet_ReplacementTableIterator($innerIterator, $this->fullReplacements, $this->subStrReplacements); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTable.php deleted file mode 100644 index a930b8d..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTable.php +++ /dev/null @@ -1,245 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Allows for replacing arbitrary strings in your data sets with other values. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - * @todo When setTableMetaData() is taken out of the AbstractTable this class should extend AbstractTable. - */ -class PHPUnit_Extensions_Database_DataSet_ReplacementTable implements PHPUnit_Extensions_Database_DataSet_ITable -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_ITable - */ - protected $table; - - /** - * @var array - */ - protected $fullReplacements; - - /** - * @var array - */ - protected $subStrReplacements; - - /** - * Creates a new replacement table - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - * @param array $fullReplacements - * @param array $subStrReplacements - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_ITable $table, Array $fullReplacements = array(), Array $subStrReplacements = array()) - { - $this->table = $table; - $this->fullReplacements = $fullReplacements; - $this->subStrReplacements = $subStrReplacements; - } - - /** - * Adds a new full replacement - * - * Full replacements will only replace values if the FULL value is a match - * - * @param string $value - * @param string $replacement - */ - public function addFullReplacement($value, $replacement) - { - $this->fullReplacements[$value] = $replacement; - } - - /** - * Adds a new substr replacement - * - * Substr replacements will replace all occurances of the substr in every column - * - * @param string $value - * @param string $replacement - */ - public function addSubStrReplacement($value, $replacement) - { - $this->subStrReplacements[$value] = $replacement; - } - - /** - * Returns the table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData() - { - return $this->table->getTableMetaData(); - } - - /** - * Returns the number of rows in this table. - * - * @return int - */ - public function getRowCount() - { - return $this->table->getRowCount(); - } - - /** - * Returns the value for the given column on the given row. - * - * @param int $row - * @param int $column - */ - public function getValue($row, $column) - { - return $this->getReplacedValue($this->table->getValue($row, $column)); - } - - /** - * Returns the an associative array keyed by columns for the given row. - * - * @param int $row - * @return array - */ - public function getRow($row) - { - $row = $this->table->getRow($row); - - return array_map(array($this, 'getReplacedValue'), $row); - } - - /** - * Asserts that the given table matches this table. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $other - */ - public function matches(PHPUnit_Extensions_Database_DataSet_ITable $other) - { - $thisMetaData = $this->getTableMetaData(); - $otherMetaData = $other->getTableMetaData(); - - if (!$thisMetaData->matches($otherMetaData) || - $this->getRowCount() != $other->getRowCount()) { - return FALSE; - } - - $columns = $thisMetaData->getColumns(); - $rowCount = $this->getRowCount(); - - for ($i = 0; $i < $rowCount; $i++) { - foreach ($columns as $columnName) { - if ($this->getValue($i, $columnName) != $other->getValue($i, $columnName)) { - return FALSE; - } - } - } - - return TRUE; - } - - public function __toString() - { - $columns = $this->getTableMetaData()->getColumns(); - - $lineSeperator = str_repeat('+----------------------', count($columns)) . "+\n"; - $lineLength = strlen($lineSeperator) - 1; - - $tableString = $lineSeperator; - $tableString .= '| ' . str_pad($this->getTableMetaData()->getTableName(), $lineLength - 4, ' ', STR_PAD_RIGHT) . " |\n"; - $tableString .= $lineSeperator; - $tableString .= $this->rowToString($columns); - $tableString .= $lineSeperator; - - $rowCount = $this->getRowCount(); - - for ($i = 0; $i < $rowCount; $i++) { - $values = array(); - - foreach ($columns as $columnName) { - $values[] = $this->getValue($i, $columnName); - } - - $tableString .= $this->rowToString($values); - $tableString .= $lineSeperator; - } - - return "\n" . $tableString . "\n"; - } - - protected function rowToString(Array $row) - { - $rowString = ''; - - foreach ($row as $value) { - if (is_null($value)) { - $value = 'NULL'; - } - - $rowString .= '| ' . str_pad(substr($value, 0, 20), 20, ' ', STR_PAD_BOTH) . ' '; - } - - return $rowString . "|\n"; - } - - protected function getReplacedValue($value) - { - if (is_scalar($value) && array_key_exists((string)$value, $this->fullReplacements)) { - return $this->fullReplacements[$value]; - } - - else if (count($this->subStrReplacements) && isset($value)) { - return str_replace(array_keys($this->subStrReplacements), array_values($this->subStrReplacements), $value); - } - - else { - return $value; - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTableIterator.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTableIterator.php deleted file mode 100644 index 7b3dd89..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/ReplacementTableIterator.php +++ /dev/null @@ -1,185 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default table iterator - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_ReplacementTableIterator implements OuterIterator, PHPUnit_Extensions_Database_DataSet_ITableIterator -{ - - /** - * @var PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected $innerIterator; - - /** - * @var array - */ - protected $fullReplacements; - - /** - * @var array - */ - protected $subStrReplacements; - - /** - * Creates a new replacement table iterator object. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableIterator $innerIterator - * @param array $fullReplacements - * @param array $subStrReplacements - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_ITableIterator $innerIterator, Array $fullReplacements = array(), Array $subStrReplacements = array()) - { - $this->innerIterator = $innerIterator; - $this->fullReplacements = $fullReplacements; - $this->subStrReplacements = $subStrReplacements; - } - - /** - * Adds a new full replacement - * - * Full replacements will only replace values if the FULL value is a match - * - * @param string $value - * @param string $replacement - */ - public function addFullReplacement($value, $replacement) - { - $this->fullReplacements[$value] = $replacement; - } - - /** - * Adds a new substr replacement - * - * Substr replacements will replace all occurances of the substr in every column - * - * @param string $value - * @param string $replacement - */ - public function addSubStrReplacement($value, $replacement) - { - $this->subStrReplacements[$value] = $replacement; - } - - /** - * Returns the current table. - * - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function getTable() - { - return $this->current(); - } - - /** - * Returns the current table's meta data. - * - * @return PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - public function getTableMetaData() - { - $this->current()->getTableMetaData(); - } - - /** - * Returns the current table. - * - * @return PHPUnit_Extensions_Database_DataSet_ITable - */ - public function current() - { - return new PHPUnit_Extensions_Database_DataSet_ReplacementTable($this->innerIterator->current(), $this->fullReplacements, $this->subStrReplacements); - } - - /** - * Returns the name of the current table. - * - * @return string - */ - public function key() - { - return $this->current()->getTableMetaData()->getTableName(); - } - - /** - * advances to the next element. - * - */ - public function next() - { - $this->innerIterator->next(); - } - - /** - * Rewinds to the first element - */ - public function rewind() - { - $this->innerIterator->rewind(); - } - - /** - * Returns true if the current index is valid - * - * @return bool - */ - public function valid() - { - return $this->innerIterator->valid(); - } - - public function getInnerIterator() - { - return $this->innerIterator; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Csv.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Csv.php deleted file mode 100644 index 5fcb7cb..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Csv.php +++ /dev/null @@ -1,125 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Creates CsvDataSets based off of a spec string. - * - * The format of the spec string is as follows: - * - * |table1:filename.csv,table2:filename2.csv - * - * The first portion of the spec including the pipe symbol '|' is optional. - * If the pipe option is included than it may be preceded by up to four - * characters specifying values for the following arguments in order: - * delimiter (defaults to ',',) enclosure (defaults to '"',) escape (defaults to '"',). - * - * Any additional characters in the csv options will be discarded. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Specs_Csv implements PHPUnit_Extensions_Database_DataSet_ISpec -{ - /** - * Creates CSV Data Set from a data set spec. - * - * @param string $dataSetSpec - * @return PHPUnit_Extensions_Database_DataSet_CsvDataSet - */ - public function getDataSet($dataSetSpec) - { - $csvDataSetArgs = $this->getCsvOptions($dataSetSpec); - $csvDataSetRfl = new ReflectionClass('PHPUnit_Extensions_Database_DataSet_CsvDataSet'); - $csvDataSet = $csvDataSetRfl->newInstanceArgs($csvDataSetArgs); - - foreach ($this->getTableFileMap($dataSetSpec) as $tableName => $file) { - $csvDataSet->addTable($tableName, $file); - } - - return $csvDataSet; - } - - /** - * Returns CSV options. - * - * Returns an array containing the options that will be passed to the - * PHPUnit_Extensions_Database_DataSet_CsvDataSet constructor. The options - * are determined by the given $dataSetSpec. - * - * @param string $dataSetSpec - * @return array - */ - protected function getCsvOptions($dataSetSpec) - { - list($csvOptStr, ) = explode('|', $dataSetSpec, 2); - return str_split($csvOptStr); - } - - /** - * Returns map of tables to files. - * - * Returns an associative array containing a mapping of tables (the key) - * to files (the values.) The tables and files are determined by the given - * $dataSetSpec - * - * @param string $dataSetSpec - * @return array - */ - protected function getTableFileMap($dataSetSpec) - { - $tables = array(); - - foreach (explode(',', $dataSetSpec) as $csvfile) { - list($tableName, $file) = explode(':', $csvfile, 2); - $tables[$tableName] = $file; - } - - return $tables; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbQuery.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbQuery.php deleted file mode 100644 index 04a0887..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbQuery.php +++ /dev/null @@ -1,111 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Creates DefaultDataSets based off of a spec string. - * - * This spec class requires a list of databases to be set to the object before - * it can return a list of databases. - * - * The format of the spec string is as follows: - * - * ::: - * - * The db label should be equal to one of the keys in the array of databases - * passed to setDatabases(). - * - * The schema should be the primary schema you will be running the sql query - * against. - * - * The table name should be set to what you would like the table name in the - * dataset to be. - * - * The sql is the query you want to use to generate the table columns and data. - * The column names in the table will be identical to the column aliases in the - * query. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Specs_DbQuery implements PHPUnit_Extensions_Database_DataSet_ISpec, PHPUnit_Extensions_Database_IDatabaseListConsumer -{ - /** - * @var array - */ - protected $databases = array(); - - /** - * Sets the database for the spec - * - * @param array $databases - */ - public function setDatabases(array $databases) - { - $this->databases = $databases; - } - - /** - * Creates a Default Data Set with a query table from a data set spec. - * - * @param string $dataSetSpec - * @return PHPUnit_Extensions_Database_DataSet_DefaultDataSet - */ - public function getDataSet($dataSetSpec) - { - list($dbLabel, $schema, $table, $sql) = explode(':', $dataSetSpec, 4); - $databaseInfo = $this->databases[$dbLabel]; - - $pdoRflc = new ReflectionClass('PDO'); - $pdo = $pdoRflc->newInstanceArgs(explode('|', $databaseInfo)); - $dbConnection = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($pdo, $schema); - $table = $dbConnection->createQueryTable($table, $sql); - - return new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table)); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbTable.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbTable.php deleted file mode 100644 index 0dec7f4..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/DbTable.php +++ /dev/null @@ -1,109 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Creates a database dataset based off of a spec string. - * - * This spec class requires a list of databases to be set to the object before - * it can return a list of databases. - * - * The format of the spec string is as follows: - * - * :: - * - * The db label should be equal to one of the keys in the array of databases - * passed to setDatabases(). - * - * The schema should be the primary schema you will be choosing tables from. - * - * The tables should be a comma delimited list of all tables you would like to - * pull data from. - * - * The sql is the query you want to use to generate the table columns and data. - * The column names in the table will be identical to the column aliases in the - * query. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Specs_DbTable implements PHPUnit_Extensions_Database_DataSet_ISpec, PHPUnit_Extensions_Database_IDatabaseListConsumer -{ - /** - * @var array - */ - protected $databases = array(); - - /** - * Sets the database for the spec - * - * @param array $databases - */ - public function setDatabases(array $databases) - { - $this->databases = $databases; - } - - /** - * Creates a DB Data Set from a data set spec. - * - * @param string $dataSetSpec - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - */ - public function getDataSet($dataSetSpec) - { - list($dbLabel, $schema, $tables) = explode(':', $dataSetSpec, 3); - $databaseInfo = $this->databases[$dbLabel]; - - $pdoRflc = new ReflectionClass('PDO'); - $pdo = $pdoRflc->newInstanceArgs(explode('|', $databaseInfo)); - $dbConnection = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($pdo, $schema); - - return !empty($tables) ? $dbConnection->createDataSet(explode(',', $tables)) : $dbConnection->createDataSet(); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Factory.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Factory.php deleted file mode 100644 index 53c9a21..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Factory.php +++ /dev/null @@ -1,89 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Creates the appropriate DataSet Spec based on a given type. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Specs_Factory implements PHPUnit_Extensions_Database_DataSet_Specs_IFactory -{ - /** - * Returns the data set - * - * @param string $type - * @return PHPUnit_Extensions_Database_DataSet_ISpec - */ - public function getDataSetSpecByType($type) - { - switch ($type) { - case 'xml': - return new PHPUnit_Extensions_Database_DataSet_Specs_Xml(); - - case 'flatxml': - return new PHPUnit_Extensions_Database_DataSet_Specs_FlatXml(); - - case 'csv': - return new PHPUnit_Extensions_Database_DataSet_Specs_Csv(); - - case 'yaml': - return new PHPUnit_Extensions_Database_DataSet_Specs_Yaml(); - - case 'dbtable': - return new PHPUnit_Extensions_Database_DataSet_Specs_DbTable(); - - case 'dbquery': - return new PHPUnit_Extensions_Database_DataSet_Specs_DbQuery(); - - default: - throw new PHPUnit_Extensions_Database_Exception("I don't know what you want from me."); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/FlatXml.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/FlatXml.php deleted file mode 100644 index 9cf7629..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/FlatXml.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0CSV - */ - -/** - * Creates a FlatXML dataset based off of a spec string. - * - * The format of the spec string is as follows: - * - * - * - * The filename should be the location of a flat xml file relative to the - * current working directory. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Specs_FlatXml implements PHPUnit_Extensions_Database_DataSet_ISpec -{ - /** - * Creates Flat XML Data Set from a data set spec. - * - * @param string $dataSetSpec - * @return PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet - */ - public function getDataSet($dataSetSpec) - { - return new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet($dataSetSpec); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/IFactory.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/IFactory.php deleted file mode 100644 index d8ae501..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/IFactory.php +++ /dev/null @@ -1,65 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * An interface for data set spec factories. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_DataSet_Specs_IFactory -{ - /** - * Returns the data set - * - * @param string $type - * @return PHPUnit_Extensions_Database_DataSet_ISpec - */ - public function getDataSetSpecByType($type); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Xml.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Xml.php deleted file mode 100644 index 9ed4bf5..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Xml.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0CSV - */ - -/** - * Creates a XML dataset based off of a spec string. - * - * The format of the spec string is as follows: - * - * - * - * The filename should be the location of a xml file relative to the - * current working directory. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Specs_Xml implements PHPUnit_Extensions_Database_DataSet_ISpec -{ - /** - * Creates XML Data Set from a data set spec. - * - * @param string $dataSetSpec - * @return PHPUnit_Extensions_Database_DataSet_XmlDataSet - */ - public function getDataSet($dataSetSpec) - { - return new PHPUnit_Extensions_Database_DataSet_XmlDataSet($dataSetSpec); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Yaml.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Yaml.php deleted file mode 100644 index 7e565fa..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/Specs/Yaml.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0CSV - */ - -/** - * Creates a YAML dataset based off of a spec string. - * - * The format of the spec string is as follows: - * - * - * - * The filename should be the location of a yaml file relative to the - * current working directory. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_Specs_Yaml implements PHPUnit_Extensions_Database_DataSet_ISpec -{ - /** - * Creates YAML Data Set from a data set spec. - * - * @param string $dataSetSpec - * @return PHPUnit_Extensions_Database_DataSet_YamlDataSet - */ - public function getDataSet($dataSetSpec) - { - return new PHPUnit_Extensions_Database_DataSet_YamlDataSet($dataSetSpec); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableFilter.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableFilter.php deleted file mode 100644 index 4e9eaf8..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableFilter.php +++ /dev/null @@ -1,136 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A table decorator that allows filtering out table columns from results. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_TableFilter extends PHPUnit_Extensions_Database_DataSet_AbstractTable -{ - - /** - * The table meta data being decorated. - * @var PHPUnit_Extensions_Database_DataSet_ITable - */ - protected $originalTable; - - /** - * Creates a new table filter using the original table - * - * @param $originalTable PHPUnit_Extensions_Database_DataSet_ITable - * @param $excludeColumns Array @deprecated, use the set* methods instead. - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_ITable $originalTable, Array $excludeColumns = array()) - { - $this->originalTable = $originalTable; - $this->setTableMetaData(new PHPUnit_Extensions_Database_DataSet_TableMetaDataFilter($originalTable->getTableMetaData())); - $this->addExcludeColumns($excludeColumns); - } - - /** - * Returns the number of rows in this table. - * - * @return int - */ - public function getRowCount() - { - return $this->originalTable->getRowCount(); - } - - /** - * Returns the value for the given column on the given row. - * - * @param int $row - * @param int $column - */ - public function getValue($row, $column) - { - if (in_array($column, $this->getTableMetaData()->getColumns())) { - return $this->originalTable->getValue($row, $column); - } else { - throw new InvalidArgumentException("The given row ({$row}) and column ({$column}) do not exist in table {$this->getTableMetaData()->getTableName()}"); - } - } - - /** - * Sets the columns to include in the table. - * @param Array $includeColumns - */ - public function addIncludeColumns(Array $includeColumns) - { - $this->tableMetaData->addIncludeColumns($includeColumns); - } - - /** - * Clears the included columns. - */ - public function clearIncludeColumns() - { - $this->tableMetaData->clearIncludeColumns(); - } - - /** - * Sets the columns to exclude from the table. - * @param Array $excludeColumns - */ - public function addExcludeColumns(Array $excludeColumns) - { - $this->tableMetaData->addExcludeColumns($excludeColumns); - } - - /** - * Clears the included columns. - */ - public function clearExcludeColumns() - { - $this->tableMetaData->clearExcludeColumns(); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableMetaDataFilter.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableMetaDataFilter.php deleted file mode 100644 index 52c0808..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/TableMetaDataFilter.php +++ /dev/null @@ -1,165 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A TableMetaData decorator that allows filtering columns from another - * metaData object. - * - * The if a whitelist (include) filter is specified, then only those columns - * will be included. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_TableMetaDataFilter extends PHPUnit_Extensions_Database_DataSet_AbstractTableMetaData -{ - - /** - * The table meta data being decorated. - * @var PHPUnit_Extensions_Database_DataSet_ITableMetaData - */ - protected $originalMetaData; - - /** - * The columns to exclude from the meta data. - * @var Array - */ - protected $excludeColumns = array(); - - /** - * The columns to include from the meta data. - * @var Array - */ - protected $includeColumns = array(); - - /** - * Creates a new filtered table meta data object filtering out - * $excludeColumns. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $originalMetaData - * @param array $excludeColumns - Deprecated. Use the set* methods instead. - */ - public function __construct(PHPUnit_Extensions_Database_DataSet_ITableMetaData $originalMetaData, Array $excludeColumns = array()) - { - $this->originalMetaData = $originalMetaData; - $this->addExcludeColumns($excludeColumns); - } - - /** - * Returns the names of the columns in the table. - * - * @return array - */ - public function getColumns() - { - if (!empty($this->includeColumns)) { - return array_values(array_intersect($this->originalMetaData->getColumns(), $this->includeColumns)); - } - elseif (!empty($this->excludeColumns)) { - return array_values(array_diff($this->originalMetaData->getColumns(), $this->excludeColumns)); - } - else { - return $this->originalMetaData->getColumns(); - } - } - - /** - * Returns the names of the primary key columns in the table. - * - * @return array - */ - public function getPrimaryKeys() - { - return $this->originalMetaData->getPrimaryKeys(); - } - - /** - * Returns the name of the table. - * - * @return string - */ - public function getTableName() - { - return $this->originalMetaData->getTableName(); - } - - /** - * Sets the columns to include in the table. - * @param Array $includeColumns - */ - public function addIncludeColumns(Array $includeColumns) - { - $this->includeColumns = array_unique(array_merge($this->includeColumns, $includeColumns)); - } - - /** - * Clears the included columns. - */ - public function clearIncludeColumns() - { - $this->includeColumns = array(); - } - - /** - * Sets the columns to exclude from the table. - * @param Array $excludeColumns - */ - public function addExcludeColumns(Array $excludeColumns) - { - $this->excludeColumns = array_unique(array_merge($this->excludeColumns, $excludeColumns)); - } - - /** - * Clears the excluded columns. - */ - public function clearExcludeColumns() - { - $this->excludeColumns = array(); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/XmlDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/XmlDataSet.php deleted file mode 100644 index 4d7bd4b..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/XmlDataSet.php +++ /dev/null @@ -1,132 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default implementation of a data set. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_XmlDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractXmlDataSet -{ - - protected function getTableInfo(Array &$tableColumns, Array &$tableValues) - { - if ($this->xmlFileContents->getName() != 'dataset') { - throw new PHPUnit_Extensions_Database_Exception("The root element of an xml data set file must be called "); - } - - foreach ($this->xmlFileContents->xpath('/dataset/table') as $tableElement) { - if (empty($tableElement['name'])) { - throw new PHPUnit_Extensions_Database_Exception("Table elements must include a name attribute specifying the table name."); - } - - $tableName = (string)$tableElement['name']; - - if (!isset($tableColumns[$tableName])) { - $tableColumns[$tableName] = array(); - } - - if (!isset($tableValues[$tableName])) { - $tableValues[$tableName] = array(); - } - - $tableInstanceColumns = array(); - - foreach ($tableElement->xpath('./column') as $columnElement) { - $columnName = (string)$columnElement; - if (empty($columnName)) { - throw new PHPUnit_Extensions_Database_Exception("column elements cannot be empty"); - } - - if (!in_array($columnName, $tableColumns[$tableName])) { - $tableColumns[$tableName][] = $columnName; - } - - $tableInstanceColumns[] = $columnName; - } - - foreach ($tableElement->xpath('./row') as $rowElement) { - $rowValues = array(); - $index = 0; - - foreach ($rowElement->children() as $columnValue) { - switch ($columnValue->getName()) { - case 'value': - $rowValues[$tableInstanceColumns[$index]] = (string)$columnValue; - $index++; - break; - case 'null': - $rowValues[$tableInstanceColumns[$index]] = NULL; - $index++; - break; - default: - throw new PHPUnit_Extensions_Database_Exception("Unknown child in the a row element."); - } - } - - $tableValues[$tableName][] = $rowValues; - } - } - } - - public static function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset, $filename) - { - $pers = new PHPUnit_Extensions_Database_DataSet_Persistors_Xml(); - $pers->setFileName($filename); - - try { - $pers->write($dataset); - } - - catch (RuntimeException $e) { - throw new PHPUnit_Framework_Exception(__METHOD__ . ' called with an unwritable file.'); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/YamlDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/YamlDataSet.php deleted file mode 100644 index c8a6df6..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DataSet/YamlDataSet.php +++ /dev/null @@ -1,170 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -if (!class_exists('sfYaml', FALSE)) { - require_once 'SymfonyComponents/YAML/sfYaml.php'; -} - -/** - * Creates CsvDataSets. - * - * You can incrementally add CSV files as tables to your datasets - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DataSet_YamlDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet -{ - /** - * @var array - */ - protected $tables = array(); - - /** - * Creates a new YAML dataset - * - * @param string $yamlFile - * @param string $enclosure - * @param string $escape - */ - public function __construct($yamlFile) - { - $this->addYamlFile($yamlFile); - } - - /** - * Adds a new yaml file to the dataset. - * @param string $yamlFile - */ - public function addYamlFile($yamlFile) - { - $data = sfYaml::load($yamlFile); - - foreach ($data as $tableName => $rows) { - if (!isset($rows)) { - $rows = array(); - } - - if (!is_array($rows)) { - continue; - } - - if (!array_key_exists($tableName, $this->tables)) { - $columns = $this->getColumns($rows); - - $tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - $tableName, $columns - ); - - $this->tables[$tableName] = new PHPUnit_Extensions_Database_DataSet_DefaultTable( - $tableMetaData - ); - } - - foreach ($rows as $row) { - $this->tables[$tableName]->addRow($row); - } - } - } - - /** - * Creates a unique list of columns from all the rows in a table. - * If the table is defined another time in the Yaml, and if the Yaml - * parser could return the multiple occerrences, then this would be - * insufficient unless we grouped all the occurences of the table - * into onwe row set. sfYaml, however, does not provide multiple tables - * with the same name, it only supplies the last table. - * - * @params all the rows in a table. - */ - private function getColumns($rows) { - $columns = array(); - - foreach ($rows as $row) { - $columns = array_merge($columns, array_keys($row)); - } - - return array_values(array_unique($columns)); - } - - /** - * Creates an iterator over the tables in the data set. If $reverse is - * true a reverse iterator will be returned. - * - * @param bool $reverse - * @return PHPUnit_Extensions_Database_DataSet_ITableIterator - */ - protected function createIterator($reverse = FALSE) - { - return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator( - $this->tables, $reverse - ); - } - - /** - * Saves a given $dataset to $filename in YAML format - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataset - * @param string $filename - */ - public static function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset, $filename) - { - $pers = new PHPUnit_Extensions_Database_DataSet_Persistors_Yaml(); - $pers->setFileName($filename); - - try { - $pers->write($dataset); - } - - catch (RuntimeException $e) { - throw new PHPUnit_Framework_Exception( - __METHOD__ . ' called with an unwritable file.' - ); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DefaultTester.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DefaultTester.php deleted file mode 100644 index 65db64d..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/DefaultTester.php +++ /dev/null @@ -1,86 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * This is the default implementation of the database tester. It receives its - * connection object from the constructor. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_DefaultTester extends PHPUnit_Extensions_Database_AbstractTester -{ - - /** - * @var PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - protected $connection; - - /** - * Creates a new default database tester using the given connection. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - */ - public function __construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - parent::__construct(); - - $this->connection = $connection; - } - - /** - * Returns the test database connection. - * - * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - public function getConnection() - { - return $this->connection; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Exception.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Exception.php deleted file mode 100644 index 9d75cf0..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Exception.php +++ /dev/null @@ -1,60 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Thrown for exceptions encountered with database operations. Provides - * information regarding which operations failed and the query (if any) it - * failed on. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Exception extends Exception -{ -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/IDatabaseListConsumer.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/IDatabaseListConsumer.php deleted file mode 100644 index f8379eb..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/IDatabaseListConsumer.php +++ /dev/null @@ -1,64 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * An interface for classes that require a list of databases to operate. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_IDatabaseListConsumer -{ - /** - * Sets the database for the spec - * - * @param array $databases - */ - public function setDatabases(array $databases); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/ITester.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/ITester.php deleted file mode 100644 index 4237548..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/ITester.php +++ /dev/null @@ -1,119 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * This is the interface for DatabaseTester objects. These objects are used to - * add database testing to existing test cases using composition instead of - * extension. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_ITester -{ - - /** - * Closes the specified connection. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - */ - public function closeConnection(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection); - - /** - * Returns the test database connection. - * - * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - public function getConnection(); - - /** - * Returns the test dataset. - * - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - */ - public function getDataSet(); - - /** - * TestCases must call this method inside setUp(). - */ - public function onSetUp(); - - /** - * TestCases must call this method inside teadDown(). - */ - public function onTearDown(); - - /** - * Sets the test dataset to use. - * - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet - */ - public function setDataSet(PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet); - - /** - * Sets the schema value. - * - * @param string $schema - */ - public function setSchema($schema); - - /** - * Sets the DatabaseOperation to call when starting the test. - * - * @param PHPUnit_Extensions_Database_Operation_DatabaseOperation $setUpOperation - */ - public function setSetUpOperation(PHPUnit_Extensions_Database_Operation_IDatabaseOperation $setUpOperation); - - /** - * Sets the DatabaseOperation to call when starting the test. - * - * @param PHPUnit_Extensions_Database_Operation_DatabaseOperation $tearDownOperation - */ - public function setTearDownOperation(PHPUnit_Extensions_Database_Operation_IDatabaseOperation $tearDownOperation); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Composite.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Composite.php deleted file mode 100644 index 9f84e4f..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Composite.php +++ /dev/null @@ -1,94 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * This class facilitates combining database operations. To create a composite - * operation pass an array of classes that implement - * PHPUnit_Extensions_Database_Operation_IDatabaseOperation and they will be - * executed in that order against all data sets. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Composite implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation -{ - - /** - * @var array - */ - protected $operations = array(); - - /** - * Creates a composite operation. - * - * @param array $operations - */ - public function __construct(Array $operations) - { - foreach ($operations as $operation) { - if ($operation instanceof PHPUnit_Extensions_Database_Operation_IDatabaseOperation) { - $this->operations[] = $operation; - } else { - throw new InvalidArgumentException("Only database operation instances can be passed to a composite database operation."); - } - } - } - - public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - try { - foreach ($this->operations as $operation) { - /* @var $operation PHPUnit_Extensions_Database_Operation_IDatabaseOperation */ - $operation->execute($connection, $dataSet); - } - } catch (PHPUnit_Extensions_Database_Operation_Exception $e) { - throw new PHPUnit_Extensions_Database_Operation_Exception("COMPOSITE[{$e->getOperation()}]", $e->getQuery(), $e->getArgs(), $e->getTable(), $e->getError()); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Delete.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Delete.php deleted file mode 100644 index 19040d6..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Delete.php +++ /dev/null @@ -1,86 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Deletes the rows in a given dataset using primary key columns. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Delete extends PHPUnit_Extensions_Database_Operation_RowBased -{ - - protected $operationName = 'DELETE'; - - protected $iteratorDirection = self::ITERATOR_TYPE_REVERSE; - - protected function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - $keys = $databaseTableMetaData->getPrimaryKeys(); - - $whereStatement = 'WHERE ' . implode(' AND ', $this->buildPreparedColumnArray($keys, $connection)); - - $query = " - DELETE FROM {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())} - {$whereStatement} - "; - - return $query; - } - - protected function buildOperationArguments(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row) - { - $args = array(); - foreach ($databaseTableMetaData->getPrimaryKeys() as $columnName) { - $args[] = $table->getValue($row, $columnName); - } - - return $args; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/DeleteAll.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/DeleteAll.php deleted file mode 100644 index 1ea4dd1..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/DeleteAll.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Deletes all rows from all tables in a dataset. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_DeleteAll implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation -{ - - public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - foreach ($dataSet->getReverseIterator() as $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - - $query = " - DELETE FROM {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())} - "; - - try { - $connection->getConnection()->query($query); - } catch (PDOException $e) { - throw new PHPUnit_Extensions_Database_Operation_Exception('DELETE_ALL', $query, array(), $table, $e->getMessage()); - } - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Exception.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Exception.php deleted file mode 100644 index 2a861c1..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Exception.php +++ /dev/null @@ -1,129 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Thrown for exceptions encountered with database operations. Provides - * information regarding which operations failed and the query (if any) it - * failed on. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Exception extends RuntimeException -{ - - /** - * @var string - */ - protected $operation; - - /** - * @var string - */ - protected $preparedQuery; - - /** - * @var array - */ - protected $preparedArgs; - - /** - * @var PHPUnit_Extensions_Database_DataSet_ITable - */ - protected $table; - - /** - * @var string - */ - protected $error; - - /** - * Creates a new dbunit operation exception - * - * @param string $operation - * @param string $current_query - * @param PHPUnit_Extensions_Database_DataSet_ITable $current_table - * @param string $error - */ - public function __construct($operation, $current_query, $current_args, $current_table, $error) - { - parent::__construct("{$operation} operation failed on query: {$current_query} using args: " . print_r($current_args, TRUE) . " [{$error}]"); - - $this->operation = $operation; - $this->preparedQuery = $current_query; - $this->preparedArgs = $current_args; - $this->table = $current_table; - $this->error = $error; - } - - public function getOperation() - { - return $this->operation; - } - - public function getQuery() - { - return $this->preparedQuery; - } - - public function getTable() - { - return $this->table; - } - - public function getArgs() - { - return $this->preparedArgs; - } - - public function getError() - { - return $this->error; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Factory.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Factory.php deleted file mode 100644 index 49cf0f9..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Factory.php +++ /dev/null @@ -1,138 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A class factory to easily return database operations. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Factory -{ - - /** - * Returns a null database operation - * - * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - public static function NONE() - { - return new PHPUnit_Extensions_Database_Operation_Null(); - } - - /** - * Returns a clean insert database operation. It will remove all contents - * from the table prior to re-inserting rows. - * - * @param bool $cascadeTruncates Set to true to force truncates to cascade on databases that support this. - * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - public static function CLEAN_INSERT($cascadeTruncates = FALSE) - { - return new PHPUnit_Extensions_Database_Operation_Composite(array( - self::TRUNCATE($cascadeTruncates), - self::INSERT() - )); - } - - /** - * Returns an insert database operation. - * - * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - public static function INSERT() - { - return new PHPUnit_Extensions_Database_Operation_Insert(); - } - - /** - * Returns a truncate database operation. - * - * @param bool $cascadeTruncates Set to true to force truncates to cascade on databases that support this. - * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - public static function TRUNCATE($cascadeTruncates = FALSE) - { - $truncate = new PHPUnit_Extensions_Database_Operation_Truncate(); - $truncate->setCascade($cascadeTruncates); - - return $truncate; - } - - /** - * Returns a delete database operation. - * - * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - public static function DELETE() - { - return new PHPUnit_Extensions_Database_Operation_Delete(); - } - - /** - * Returns a delete_all database operation. - * - * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - public static function DELETE_ALL() - { - return new PHPUnit_Extensions_Database_Operation_DeleteAll(); - } - - /** - * Returns an update database operation. - * - * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation - */ - public static function UPDATE() - { - return new PHPUnit_Extensions_Database_Operation_Update(); - } - -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/IDatabaseOperation.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/IDatabaseOperation.php deleted file mode 100644 index c66d3e2..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/IDatabaseOperation.php +++ /dev/null @@ -1,69 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides a basic interface and functionality for executing database - * operations against a connection using a specific dataSet. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_Operation_IDatabaseOperation -{ - - /** - * Executes the database operation against the given $connection for the - * given $dataSet. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet - * @throws PHPUnit_Extensions_Database_Operation_Exception - */ - public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet); -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Insert.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Insert.php deleted file mode 100644 index 34c322c..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Insert.php +++ /dev/null @@ -1,104 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * This class provides functionality for inserting rows from a dataset into a database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Insert extends PHPUnit_Extensions_Database_Operation_RowBased -{ - - protected $operationName = 'INSERT'; - - protected function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - $columnCount = count($table->getTableMetaData()->getColumns()); - - if ($columnCount > 0) { - $placeHolders = implode(', ', array_fill(0, $columnCount, '?')); - - $columns = ''; - foreach ($table->getTableMetaData()->getColumns() as $column) { - $columns .= $connection->quoteSchemaObject($column).', '; - } - - $columns = substr($columns, 0, -2); - - $query = " - INSERT INTO {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())} - ({$columns}) - VALUES - ({$placeHolders}) - "; - - return $query; - } else { - return FALSE; - } - } - - protected function buildOperationArguments(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row) - { - $args = array(); - foreach ($table->getTableMetaData()->getColumns() as $columnName) { - $args[] = $table->getValue($row, $columnName); - } - return $args; - } - - protected function disablePrimaryKeys(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - if (count($databaseTableMetaData->getPrimaryKeys())) { - return TRUE; - } - return FALSE; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Null.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Null.php deleted file mode 100644 index cb5df67..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Null.php +++ /dev/null @@ -1,63 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * This class represents a null database operation. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Null implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation -{ - - public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - /* do nothing */ - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Replace.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Replace.php deleted file mode 100644 index 0812407..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Replace.php +++ /dev/null @@ -1,142 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Updates the rows in a given dataset using primary key columns. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Replace extends PHPUnit_Extensions_Database_Operation_RowBased -{ - - protected $operationName = 'REPLACE'; - - protected function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - $keys = $databaseTableMetaData->getPrimaryKeys(); - - $whereStatement = 'WHERE ' . implode(' AND ', $this->buildPreparedColumnArray($keys, $connection)); - - $query = " - SELECT COUNT(*) - FROM {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())} - {$whereStatement} - "; - - return $query; - } - - protected function buildOperationArguments(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row) - { - $args = array(); - - foreach ($databaseTableMetaData->getPrimaryKeys() as $columnName) { - $args[] = $table->getValue($row, $columnName); - } - - return $args; - } - - /** - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet - */ - public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - $insertOperation = new PHPUnit_Extensions_Database_Operation_Insert; - $updateOperation = new PHPUnit_Extensions_Database_Operation_Update; - $databaseDataSet = $connection->createDataSet(); - - foreach ($dataSet as $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - $databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName()); - - $insertQuery = $insertOperation->buildOperationQuery($databaseTableMetaData, $table, $connection); - $updateQuery = $updateOperation->buildOperationQuery($databaseTableMetaData, $table, $connection); - $selectQuery = $this->buildOperationQuery($databaseTableMetaData, $table, $connection); - - $insertStatement = $connection->getConnection()->prepare($insertQuery); - $updateStatement = $connection->getConnection()->prepare($updateQuery); - $selectStatement = $connection->getConnection()->prepare($selectQuery); - - $rowCount = $table->getRowCount(); - - for ($i = 0; $i < $rowCount; $i++) { - $selectArgs = $this->buildOperationArguments($databaseTableMetaData, $table, $i); - $query = $selectQuery; - $args = $selectArgs; - - try { - $selectStatement->execute($selectArgs); - - if ($selectStatement->fetchColumn(0) > 0) { - $updateArgs = $updateOperation->buildOperationArguments($databaseTableMetaData, $table, $i); - $query = $updateQuery; - $args = $updateArgs; - - $updateStatement->execute($updateArgs); - } else { - $insertArgs = $insertOperation->buildOperationArguments($databaseTableMetaData, $table, $i); - $query = $insertQuery; - $args = $insertArgs; - - $insertStatement->execute($insertArgs); - } - } - - catch (Exception $e) { - throw new PHPUnit_Extensions_Database_Operation_Exception( - $this->operationName, $query, $args, $table, $e->getMessage() - ); - } - } - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/RowBased.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/RowBased.php deleted file mode 100644 index 5954879..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/RowBased.php +++ /dev/null @@ -1,143 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Provides basic functionality for row based operations. - * - * To create a row based operation you must create two functions. The first - * one, buildOperationQuery(), must return a query that will be used to create - * a prepared statement. The second one, buildOperationArguments(), should - * return an array containing arguments for each row. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_Operation_RowBased implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation -{ - const ITERATOR_TYPE_FORWARD = 0; - const ITERATOR_TYPE_REVERSE = 1; - - protected $operationName; - - protected $iteratorDirection = self::ITERATOR_TYPE_FORWARD; - - protected abstract function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection); - - protected abstract function buildOperationArguments(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row); - - /** - * Allows an operation to disable primary keys if necessary. - * - * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData - * @param PHPUnit_Extensions_Database_DataSet_ITable $table - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - */ - protected function disablePrimaryKeys(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - return FALSE; - } - - /** - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet - */ - public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - $databaseDataSet = $connection->createDataSet(); - - $dsIterator = $this->iteratorDirection == self::ITERATOR_TYPE_REVERSE ? $dataSet->getReverseIterator() : $dataSet->getIterator(); - - foreach ($dsIterator as $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - $databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName()); - $query = $this->buildOperationQuery($databaseTableMetaData, $table, $connection); - $disablePrimaryKeys = $this->disablePrimaryKeys($databaseTableMetaData, $table, $connection); - - if ($query === FALSE && $table->getRowCount() > 0) { - throw new PHPUnit_Extensions_Database_Operation_Exception($this->operationName, '', array(), $table, "Rows requested for insert, but no columns provided!"); - } - - if ($disablePrimaryKeys) { - $connection->disablePrimaryKeys($databaseTableMetaData->getTableName()); - } - - $statement = $connection->getConnection()->prepare($query); - $rowCount = $table->getRowCount(); - - for ($i = 0; $i < $rowCount; $i++) { - $args = $this->buildOperationArguments($databaseTableMetaData, $table, $i); - - try { - $statement->execute($args); - } - - catch (Exception $e) { - throw new PHPUnit_Extensions_Database_Operation_Exception( - $this->operationName, $query, $args, $table, $e->getMessage() - ); - } - } - - if ($disablePrimaryKeys) { - $connection->enablePrimaryKeys($databaseTableMetaData->getTableName()); - } - } - } - - protected function buildPreparedColumnArray($columns, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - $columnArray = array(); - - foreach ($columns as $columnName) { - $columnArray[] = "{$connection->quoteSchemaObject($columnName)} = ?"; - } - - return $columnArray; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Truncate.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Truncate.php deleted file mode 100644 index 5312040..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Truncate.php +++ /dev/null @@ -1,84 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Executes a truncate against all tables in a dataset. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Truncate implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation -{ - protected $useCascade = FALSE; - - public function setCascade($cascade = TRUE) - { - $this->useCascade = $cascade; - } - - public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) - { - foreach ($dataSet->getReverseIterator() as $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - $query = " - {$connection->getTruncateCommand()} {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())} - "; - - if ($this->useCascade && $connection->allowsCascading()) { - $query .= " CASCADE"; - } - - try { - $connection->getConnection()->query($query); - } catch (PDOException $e) { - throw new PHPUnit_Extensions_Database_Operation_Exception('TRUNCATE', $query, array(), $table, $e->getMessage()); - } - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Update.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Update.php deleted file mode 100644 index e912904..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/Operation/Update.php +++ /dev/null @@ -1,98 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Updates the rows in a given dataset using primary key columns. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_Operation_Update extends PHPUnit_Extensions_Database_Operation_RowBased -{ - - protected $operationName = 'UPDATE'; - - protected function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - $keys = $databaseTableMetaData->getPrimaryKeys(); - $columns = $table->getTableMetaData()->getColumns(); - $whereStatement = 'WHERE ' . implode(' AND ', $this->buildPreparedColumnArray($keys, $connection)); - $setStatement = 'SET ' . implode(', ', $this->buildPreparedColumnArray($columns, $connection)); - - $query = " - UPDATE {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())} - {$setStatement} - {$whereStatement} - "; - - return $query; - } - - protected function buildOperationArguments(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row) - { - $args = array(); - foreach ($table->getTableMetaData()->getColumns() as $columnName) { - $args[] = $table->getValue($row, $columnName); - } - - foreach ($databaseTableMetaData->getPrimaryKeys() as $columnName) { - $args[] = $table->getValue($row, $columnName); - } - - return $args; - } - - protected function disablePrimaryKeys(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - if (count($databaseTableMetaData->getPrimaryKeys())) { - return TRUE; - } - return FALSE; - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/TestCase.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/TestCase.php deleted file mode 100644 index 00a78dd..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/TestCase.php +++ /dev/null @@ -1,277 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A TestCase extension that provides functionality for testing and asserting - * against a real database. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -abstract class PHPUnit_Extensions_Database_TestCase extends PHPUnit_Framework_TestCase -{ - - /** - * @var PHPUnit_Extensions_Database_ITester - */ - protected $databaseTester; - - /** - * Closes the specified connection. - * - * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection - */ - protected function closeConnection(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) - { - $this->getDatabaseTester()->closeConnection($connection); - } - - /** - * Returns the test database connection. - * - * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - protected abstract function getConnection(); - - /** - * Gets the IDatabaseTester for this testCase. If the IDatabaseTester is - * not set yet, this method calls newDatabaseTester() to obtain a new - * instance. - * - * @return PHPUnit_Extensions_Database_ITester - */ - protected function getDatabaseTester() - { - if (empty($this->databaseTester)) { - $this->databaseTester = $this->newDatabaseTester(); - } - - return $this->databaseTester; - } - - /** - * Returns the test dataset. - * - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - */ - protected abstract function getDataSet(); - - /** - * Returns the database operation executed in test setup. - * - * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation - */ - protected function getSetUpOperation() - { - return PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT(); - } - - /** - * Returns the database operation executed in test cleanup. - * - * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation - */ - protected function getTearDownOperation() - { - return PHPUnit_Extensions_Database_Operation_Factory::NONE(); - } - - /** - * Creates a IDatabaseTester for this testCase. - * - * @return PHPUnit_Extensions_Database_ITester - */ - protected function newDatabaseTester() - { - return new PHPUnit_Extensions_Database_DefaultTester($this->getConnection()); - } - - /** - * Creates a new DefaultDatabaseConnection using the given PDO connection - * and database schema name. - * - * @param PDO $connection - * @param string $schema - * @return PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection - */ - protected function createDefaultDBConnection(PDO $connection, $schema = '') - { - return new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($connection, $schema); - } - - /** - * Creates a new FlatXmlDataSet with the given $xmlFile. (absolute path.) - * - * @param string $xmlFile - * @return PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet - */ - protected function createFlatXMLDataSet($xmlFile) - { - return new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet($xmlFile); - } - - /** - * Creates a new XMLDataSet with the given $xmlFile. (absolute path.) - * - * @param string $xmlFile - * @return PHPUnit_Extensions_Database_DataSet_XmlDataSet - */ - protected function createXMLDataSet($xmlFile) - { - return new PHPUnit_Extensions_Database_DataSet_XmlDataSet($xmlFile); - } - - /** - * Create a a new MysqlXmlDataSet with the given $xmlFile. (absolute path.) - * - * @param string $xmlFile - * @return PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet - * @since Method available since Release 1.0.0 - */ - protected function createMySQLXMLDataSet($xmlFile) - { - return new PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet($xmlFile); - } - - /** - * Returns an operation factory instance that can be used to instantiate - * new operations. - * - * @return PHPUnit_Extensions_Database_Operation_Factory - */ - protected function getOperations() - { - return new PHPUnit_Extensions_Database_Operation_Factory(); - } - - /** - * Performs operation returned by getSetUpOperation(). - */ - protected function setUp() - { - parent::setUp(); - - $this->databaseTester = NULL; - - $this->getDatabaseTester()->setSetUpOperation($this->getSetUpOperation()); - $this->getDatabaseTester()->setDataSet($this->getDataSet()); - $this->getDatabaseTester()->onSetUp(); - } - - /** - * Performs operation returned by getSetUpOperation(). - */ - protected function tearDown() - { - $this->getDatabaseTester()->setTearDownOperation($this->getTearDownOperation()); - $this->getDatabaseTester()->setDataSet($this->getDataSet()); - $this->getDatabaseTester()->onTearDown(); - - /** - * Destroy the tester after the test is run to keep DB connections - * from piling up. - */ - $this->databaseTester = NULL; - } - - /** - * Asserts that two given tables are equal. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $expected - * @param PHPUnit_Extensions_Database_DataSet_ITable $actual - * @param string $message - */ - public static function assertTablesEqual(PHPUnit_Extensions_Database_DataSet_ITable $expected, PHPUnit_Extensions_Database_DataSet_ITable $actual, $message = '') - { - $constraint = new PHPUnit_Extensions_Database_Constraint_TableIsEqual($expected); - - self::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that two given datasets are equal. - * - * @param PHPUnit_Extensions_Database_DataSet_ITable $expected - * @param PHPUnit_Extensions_Database_DataSet_ITable $actual - * @param string $message - */ - public static function assertDataSetsEqual(PHPUnit_Extensions_Database_DataSet_IDataSet $expected, PHPUnit_Extensions_Database_DataSet_IDataSet $actual, $message = '') - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($expected); - - self::assertThat($actual, $constraint, $message); - } - - /** - * Assert that a given table has a given amount of rows - * - * @param string $tableName Name of the table - * @param int $expected Expected amount of rows in the table - * @param string $message Optional message - */ - public function assertTableRowCount($tableName, $expected, $message = '') - { - $constraint = new PHPUnit_Extensions_Database_Constraint_TableRowCount($tableName, $expected); - $actual = self::getConnection()->getRowCount($tableName); - - self::assertThat($actual, $constraint, $message); - } - - /** - * Asserts that a given table contains a given row - * - * @param array $expectedRow Row expected to find - * @param PHPUnit_Extensions_Database_DataSet_ITable $table Table to look into - * @param string $message Optional message - */ - public function assertTableContains(array $expectedRow, PHPUnit_Extensions_Database_DataSet_ITable $table, $message = '') - { - self::assertThat($table->assertContainsRow($expectedRow), self::isTrue(), $message); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Command.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Command.php deleted file mode 100644 index b104451..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Command.php +++ /dev/null @@ -1,89 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Delegates database extension commands to the appropriate mode classes. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_UI_Command -{ - /** - * @var PHPUnit_Extensions_Database_UI_IModeFactory - */ - protected $modeFactory; - - /** - * @param PHPUnit_Extensions_Database_UI_IModeFactory $modeFactory - */ - public function __construct(PHPUnit_Extensions_Database_UI_IModeFactory $modeFactory) - { - $this->modeFactory = $modeFactory; - } - - /** - * Executes the database extension ui. - * - * @param PHPUnit_Extensions_Database_UI_IMedium $medium - * @param PHPUnit_Extensions_Database_UI_Context $context - */ - public function main(PHPUnit_Extensions_Database_UI_IMedium $medium, PHPUnit_Extensions_Database_UI_Context $context) - { - try { - $medium->buildContext($context); - $mode = $this->modeFactory->getMode($context->getMode()); - $mode->execute($context->getModeArguments(), $medium); - - } catch (Exception $e) { - $medium->handleException($e); - } - } -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Context.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Context.php deleted file mode 100644 index 5f44705..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Context.php +++ /dev/null @@ -1,100 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Holds the context of a particular database extension ui call. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_UI_Context -{ - /** - * @var string - */ - protected $mode; - - /** - * @var array - */ - protected $modeArguments; - - /** - * @param string $mode - */ - public function setMode($mode) - { - $this->mode = $mode; - } - - /** - * @return string - */ - public function getMode() - { - return $this->mode; - } - - /** - * @param array $arguments - */ - public function setModeArguments(array $arguments) - { - $this->mode_arguments = $arguments; - } - - /** - * @return array - */ - public function getModeArguments() - { - return $this->mode_arguments; - } -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMedium.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMedium.php deleted file mode 100644 index a44d14f..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMedium.php +++ /dev/null @@ -1,72 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Defines the interface necessary to create new mediums. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_UI_IMedium extends PHPUnit_Extensions_Database_UI_IMediumPrinter -{ - /** - * Builds the context for the application. - * - * @param PHPUnit_Extensions_Database_UI_Context $context - */ - public function buildContext(PHPUnit_Extensions_Database_UI_Context $context); - - /** - * Handles the displaying of exceptions received from the application. - * - * @param Exception $e - */ - public function handleException(Exception $e); -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMediumPrinter.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMediumPrinter.php deleted file mode 100644 index 6571668..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMediumPrinter.php +++ /dev/null @@ -1,72 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Defines the interface necessary to create new medium printers. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_UI_IMediumPrinter -{ - /** - * Prints standard output messages. - * - * @param string $message - */ - public function output($message); - - /** - * Prints standard error messages. - * - * @param string $message - */ - public function error($message); -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMode.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMode.php deleted file mode 100644 index 57a3266..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IMode.php +++ /dev/null @@ -1,66 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Defines the interface necessary to create new modes - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_UI_IMode -{ - /** - * Executes the mode using the given arguments and medium. - * - * @param array $modeArguments - * @param PHPUnit_Extensions_Database_UI_IMediumPrinter $medium - */ - public function execute(array $modeArguments, PHPUnit_Extensions_Database_UI_IMediumPrinter $medium); -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IModeFactory.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IModeFactory.php deleted file mode 100644 index d5af645..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/IModeFactory.php +++ /dev/null @@ -1,73 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Defines the interface necessary to create new mode factories - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -interface PHPUnit_Extensions_Database_UI_IModeFactory -{ - /** - * Generates a new mode based on a given name. - * - * @param string $mode - * @return PHPUnit_Extensions_Database_UI_IMode - */ - public function getMode($mode); - - /** - * Returns the names of valid modes this factory can create. - * - * @return array - */ - public function getModeList(); -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/InvalidModeException.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/InvalidModeException.php deleted file mode 100644 index 62a122a..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/InvalidModeException.php +++ /dev/null @@ -1,96 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * An exception thrown when an invalid mode is requested from a mode factory. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_UI_InvalidModeException extends LogicException -{ - /** - * @var string - */ - protected $mode; - - /** - * @var PHPUnit_Extensions_Database_UI_IModeFactory - */ - protected $modeFactory; - - /** - * @param string $mode - * @param string $msg - * @param PHPUnit_Extensions_Database_UI_IModeFactory $modeFactory - */ - public function __construct($mode, $msg, PHPUnit_Extensions_Database_UI_IModeFactory $modeFactory) - { - $this->mode = $mode; - $this->modeFactory = $modeFactory; - parent::__construct($msg); - } - - /** - * @return string - */ - public function getMode() - { - return $this->mode; - } - - /** - * @return array - */ - public function getValidModes() - { - return $this->modeFactory->getModeList(); - } -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Mediums/Text.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Mediums/Text.php deleted file mode 100644 index 58d0d90..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Mediums/Text.php +++ /dev/null @@ -1,138 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * A text medium for the database extension tool. - * - * This class builds the call context based on command line parameters and - * prints output to stdout and stderr as appropriate. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_UI_Mediums_Text implements PHPUnit_Extensions_Database_UI_IMedium -{ - /** - * @var array - */ - protected $arguments; - - /** - * @var string - */ - protected $command; - - /** - * @param array $arguments - */ - public function __construct(Array $arguments) - { - $this->arguments = $arguments; - } - - /** - * Builds the context for the application. - * - * @param PHPUnit_Extensions_Database_UI_Context $context - */ - public function buildContext(PHPUnit_Extensions_Database_UI_Context $context) - { - $arguments = $this->arguments; - $this->command = array_shift($arguments); - - $context->setMode(array_shift($arguments)); - $context->setModeArguments($arguments); - } - - /** - * Handles the displaying of exceptions received from the application. - * - * @param Exception $e - */ - public function handleException(Exception $e) - { - try { - throw $e; - } catch (PHPUnit_Extensions_Database_UI_InvalidModeException $invalidMode) { - if ($invalidMode->getMode() == '') { - $this->error('Please Specify a Command!' . PHP_EOL); - } else { - $this->error('Command Does Not Exist: ' . $invalidMode->getMode() . PHP_EOL); - } - $this->error('Valid Commands:' . PHP_EOL); - - foreach ($invalidMode->getValidModes() as $mode) { - $this->error(' ' . $mode . PHP_EOL); - } - } catch (Exception $e) { - $this->error('Unknown Error: ' . $e->getMessage() . PHP_EOL); - } - } - - /** - * Prints the message to stdout. - * - * @param string $message - */ - public function output($message) - { - echo $message; - } - - /** - * Prints the message to stderr - * - * @param string $message - */ - public function error($message) - { - fputs(STDERR, $message); - } -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/ModeFactory.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/ModeFactory.php deleted file mode 100644 index 160d30f..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/ModeFactory.php +++ /dev/null @@ -1,130 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The default factory for db extension modes. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de//** - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_UI_ModeFactory implements PHPUnit_Extensions_Database_UI_IModeFactory -{ - /** - * Generates a new mode based on a given name. - * - * @param string $mode - * @return PHPUnit_Extensions_Database_UI_IMode - */ - public function getMode($mode) - { - if ($mode == '') { - throw new PHPUnit_Extensions_Database_UI_InvalidModeException($mode, 'A mode was not provided.', $this); - } - - $modeMap = $this->getModeMap(); - if (isset($modeMap[$mode])) { - $modeClass = $this->getModeClass($mode, $modeMap[$mode]); - - return new $modeClass(); - } else { - throw new PHPUnit_Extensions_Database_UI_InvalidModeException($mode, 'The mode does not exist. Attempting to load mode ' . $mode, $this); - } - } - - /** - * Returns the names of valid modes this factory can create. - * - * @return array - */ - public function getModeList() - { - return array_keys($this->getModeMap()); - } - - /** - * Returns a map of modes to class name parts - * - * @return array - */ - protected function getModeMap() - { - return array('export-dataset' => 'ExportDataSet'); - } - - /** - * Given a $mode label and a $mode_name class part attempts to return the - * class name necessary to instantiate the mode. - * - * @param string $mode - * @param string $mode_name - * @return string - */ - protected function getModeClass($mode, $mode_name) - { - $modeClass = 'PHPUnit_Extensions_Database_UI_Modes_' . $mode_name; - $modeFile = dirname(__FILE__) . '/Modes/' . $mode_name . '.php'; - - if (class_exists($modeClass)) { - return $modeClass; - } - - if (!is_readable($modeFile)) { - throw new PHPUnit_Extensions_Database_UI_InvalidModeException($mode, 'The mode\'s file could not be loaded. Trying file ' . $modeFile, $this); - } - - require_once ($modeFile); - - if (!class_exists($modeClass)) { - throw new PHPUnit_Extensions_Database_UI_InvalidModeException($mode, 'The mode class was not found in the file. Expecting class name ' . $modeClass, $this); - } - - return $modeClass; - } -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet.php deleted file mode 100644 index 14b6549..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet.php +++ /dev/null @@ -1,119 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * The class for the export-dataset command. - * - * This command is used to convert existing data sets or data in the database - * into a valid data set format. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_UI_Modes_ExportDataSet implements PHPUnit_Extensions_Database_UI_IMode -{ - /** - * Executes the export dataset command. - * - * @param array $modeArguments - * @param PHPUnit_Extensions_Database_UI_IMediumPrinter $medium - */ - public function execute(array $modeArguments, PHPUnit_Extensions_Database_UI_IMediumPrinter $medium) - { - $arguments = new PHPUnit_Extensions_Database_UI_Modes_ExportDataSet_Arguments($modeArguments); - - if (FALSE && !$arguments->areValid()) { - throw new InvalidArgumentException("The arguments for this command are incorrect."); - } - - $datasets = array(); - foreach ($arguments->getArgumentArray('dataset') as $argString) { - $datasets[] = $this->getDataSetFromArgument($argString, $arguments->getDatabases()); - } - - $finalDataset = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet($datasets); - - $outputDataset = $this->getPersistorFromArgument($arguments->getSingleArgument('output')); - $outputDataset->write($finalDataset); - } - - /** - * Returns the correct dataset given an argument containing a dataset spec. - * - * @param string $argString - * @param array $databaseList - * @return PHPUnit_Extensions_Database_DataSet_IDataSet - */ - protected function getDataSetFromArgument($argString, $databaseList) - { - $dataSetSpecFactory = new PHPUnit_Extensions_Database_DataSet_Specs_Factory(); - list($type, $dataSetSpecStr) = explode(':', $argString, 2); - $dataSetSpec = $dataSetSpecFactory->getDataSetSpecByType($type); - - if ($dataSetSpec instanceof PHPUnit_Extensions_Database_IDatabaseListConsumer) { - $dataSetSpec->setDatabases($databaseList); - } - - return $dataSetSpec->getDataSet($dataSetSpecStr); - } - - /** - * Returns the correct persistor given an argument containing a persistor spec. - * - * @param string $argString - * @return PHPUnit_Extensions_Database_DataSet_IPersistable - */ - protected function getPersistorFromArgument($argString) - { - $persistorFactory = new PHPUnit_Extensions_Database_DataSet_Persistors_Factory(); - list($type, $spec) = explode(':', $argString, 2); - return $persistorFactory->getPersistorBySpec($type, $spec); - } -} - diff --git a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet/Arguments.php b/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet/Arguments.php deleted file mode 100644 index 6760dde..0000000 --- a/vendor/eher/phpunit/src/dbunit/PHPUnit/Extensions/Database/UI/Modes/ExportDataSet/Arguments.php +++ /dev/null @@ -1,153 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * Represents arguments received from a medium. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class PHPUnit_Extensions_Database_UI_Modes_ExportDataSet_Arguments -{ - /** - * @var array - */ - protected $arguments = array(); - - /** - * @param array $arguments - */ - public function __construct(array $arguments) - { - foreach ($arguments as $argument) { - list($argName, $argValue) = explode('=', $argument, 2); - - $argName = trim($argName, '-'); - - if (!isset($this->arguments[$argName])) { - $this->arguments[$argName] = array(); - } - - $this->arguments[$argName][] = $argValue; - } - } - - /** - * Returns an array of arguments matching the given $argName - * - * @param string $argName - * @return array - */ - public function getArgumentArray($argName) - { - if ($this->argumentIsSet($argName)) { - return $this->arguments[$argName]; - } else { - return NULL; - } - } - - /** - * Returns a single argument value. - * - * If $argName points to an array the first argument will be returned. - * - * @param string $argName - * @return mixed - */ - public function getSingleArgument($argName) - { - if ($this->argumentIsSet($argName)) { - return reset($this->arguments[$argName]); - } else { - return NULL; - } - } - - /** - * Returns whether an argument is set. - * - * @param string $argName - * @return bool - */ - public function argumentIsSet($argName) - { - return array_key_exists($argName, $this->arguments); - } - - /** - * Returns an array containing the names of all arguments provided. - * - * @return array - */ - public function getArgumentNames() - { - return array_keys($this->arguments); - } - - /** - * Returns an array of database arguments keyed by name. - * - * @todo this should be moved. - * @return array - */ - public function getDatabases() - { - $databases = $this->getArgumentArray('database'); - - $retDb = array(); - foreach ($databases as $db) { - list($name, $arg) = explode(':', $db, 2); - $retDb[$name] = $arg; - } - - return $retDb; - } -} - diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccount.php b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccount.php deleted file mode 100644 index 0b4857d..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccount.php +++ /dev/null @@ -1,206 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -class BankAccountException extends RuntimeException {} - -/** - * A bank account. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class BankAccount -{ - /** - * The bank account's balance. - * - * @var float - */ - protected $balance = 0; - - /** - * The bank account's number. - * - * @var float - */ - protected $accountNumber = 0; - - /** - * The PDO connection used to store and retrieve bank account information. - * - * @var PDO - */ - protected $pdo; - - public function __construct($accountNumber, PDO $pdo) - { - $this->accountNumber = $accountNumber; - $this->pdo = $pdo; - - $this->loadAccount(); - } - - /** - * Returns the bank account's balance. - * - * @return float - */ - public function getBalance() - { - return $this->balance; - } - - /** - * Sets the bank account's balance. - * - * @param float $balance - * @throws BankAccountException - */ - protected function setBalance($balance) - { - if ($balance >= 0) { - $this->balance = $balance; - $this->updateAccount(); - } else { - throw new BankAccountException; - } - } - - /** - * Returns the bank account's number. - * - * @return float - */ - public function getAccountNumber() - { - return $this->accountNumber; - } - - /** - * Deposits an amount of money to the bank account. - * - * @param float $balance - * @throws BankAccountException - */ - public function depositMoney($balance) - { - $this->setBalance($this->getBalance() + $balance); - - return $this->getBalance(); - } - - /** - * Withdraws an amount of money from the bank account. - * - * @param float $balance - * @throws BankAccountException - */ - public function withdrawMoney($balance) - { - $this->setBalance($this->getBalance() - $balance); - - return $this->getBalance(); - } - - /** - * Loads account information from the database. - */ - protected function loadAccount() - { - $query = "SELECT * FROM bank_account WHERE account_number = ?"; - - $statement = $this->pdo->prepare($query); - - $statement->execute(array($this->accountNumber)); - - if ($bankAccountInfo = $statement->fetch(PDO::FETCH_ASSOC)) - { - $this->balance = $bankAccountInfo['balance']; - } - else - { - $this->balance = 0; - $this->addAccount(); - } - } - - /** - * Saves account information to the database. - */ - protected function updateAccount() - { - $query = "UPDATE bank_account SET balance = ? WHERE account_number = ?"; - - $statement = $this->pdo->prepare($query); - $statement->execute(array($this->balance, $this->accountNumber)); - } - - /** - * Adds account information to the database. - */ - protected function addAccount() - { - $query = "INSERT INTO bank_account (balance, account_number) VALUES(?, ?)"; - - $statement = $this->pdo->prepare($query); - $statement->execute(array($this->balance, $this->accountNumber)); - } - - static public function createTable(PDO $pdo) - { - $query = " - CREATE TABLE bank_account ( - account_number VARCHAR(17) PRIMARY KEY, - balance DECIMAL(9,2) NOT NULL DEFAULT 0 - ); - "; - - $pdo->query($query); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountCompositeTest.php b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountCompositeTest.php deleted file mode 100644 index 209f866..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountCompositeTest.php +++ /dev/null @@ -1,165 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -require_once 'BankAccount.php'; - -/** - * Tests for the BankAccount class. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class BankAccountCompositeTest extends PHPUnit_Framework_TestCase -{ - protected $pdo; - - public function setUp() - { - $this->pdo = new PDO('sqlite::memory:'); - BankAccount::createTable($this->pdo); - } - - /** - * @return PHPUnit_Extensions_Database_DefaultTester - */ - protected function getDatabaseTester() - { - $connection = new PHPUnit_Extensions_Database_DB_DefaultConnection($this->pdo, 'sqlite'); - $tester = new PHPUnit_Extensions_Database_DefaultTester($connection); - $tester->setSetUpOperation(PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT()); - $tester->setTearDownOperation(PHPUnit_Extensions_Database_Operation_Factory::NONE()); - $tester->setDataSet(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/_files/bank-account-seed.xml')); - - return $tester; - } - - public function testNewAccountBalanceIsInitiallyZero() - { - $tester = $this->getDatabaseTester(); - $tester->onSetUp(); - - $bank_account = new BankAccount('12345678912345678', $this->pdo); - $this->assertEquals(0, $bank_account->getBalance()); - - $tester->onTearDown(); - } - - public function testOldAccountInfoInitiallySet() - { - $tester = $this->getDatabaseTester(); - $tester->onSetUp(); - - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $this->assertEquals(100, $bank_account->getBalance()); - $this->assertEquals('15934903649620486', $bank_account->getAccountNumber()); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $this->assertEquals(1216, $bank_account->getBalance()); - $this->assertEquals('15936487230215067', $bank_account->getAccountNumber()); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $this->assertEquals(89, $bank_account->getBalance()); - $this->assertEquals('12348612357236185', $bank_account->getAccountNumber()); - - $tester->onTearDown(); - } - - public function testAccountBalanceDeposits() - { - $tester = $this->getDatabaseTester(); - $tester->onSetUp(); - - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $bank_account->depositMoney(100); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $bank_account->depositMoney(230); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $bank_account->depositMoney(24); - - $xml_dataset = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/_files/bank-account-after-deposits.xml'); - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($xml_dataset, $tester->getConnection()->createDataSet()); - - $tester->onTearDown(); - } - - public function testAccountBalanceWithdrawals() - { - $tester = $this->getDatabaseTester(); - $tester->onSetUp(); - - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $bank_account->withdrawMoney(100); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $bank_account->withdrawMoney(230); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $bank_account->withdrawMoney(24); - - $xml_dataset = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/_files/bank-account-after-withdrawals.xml'); - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($xml_dataset, $tester->getConnection()->createDataSet()); - - $tester->onTearDown(); - } - - public function testNewAccountCreation() - { - $tester = $this->getDatabaseTester(); - $tester->onSetUp(); - - $bank_account = new BankAccount('12345678912345678', $this->pdo); - - $xml_dataset = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/_files/bank-account-after-new-account.xml'); - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($xml_dataset, $tester->getConnection()->createDataSet()); - - $tester->onTearDown(); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTest.php b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTest.php deleted file mode 100644 index 52b2c48..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTest.php +++ /dev/null @@ -1,143 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -require_once 'BankAccount.php'; - -/** - * Tests for the BankAccount class. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class BankAccountDBTest extends PHPUnit_Extensions_Database_TestCase -{ - protected $pdo; - - public function __construct() - { - $this->pdo = new PDO('sqlite::memory:'); - BankAccount::createTable($this->pdo); - } - - /** - * Returns the test database connection. - * - * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - protected function getConnection() - { - return $this->createDefaultDBConnection($this->pdo, 'sqlite'); - } - - protected function getDataSet() - { - return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-seed.xml'); - } - - public function testNewAccountBalanceIsInitiallyZero() - { - $bank_account = new BankAccount('12345678912345678', $this->pdo); - $this->assertEquals(0, $bank_account->getBalance()); - } - - public function testOldAccountInfoInitiallySet() - { - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $this->assertEquals(100, $bank_account->getBalance()); - $this->assertEquals('15934903649620486', $bank_account->getAccountNumber()); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $this->assertEquals(1216, $bank_account->getBalance()); - $this->assertEquals('15936487230215067', $bank_account->getAccountNumber()); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $this->assertEquals(89, $bank_account->getBalance()); - $this->assertEquals('12348612357236185', $bank_account->getAccountNumber()); - } - - public function testAccountBalanceDeposits() - { - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $bank_account->depositMoney(100); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $bank_account->depositMoney(230); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $bank_account->depositMoney(24); - - $xml_dataset = $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-after-deposits.xml'); - $this->assertDataSetsEqual($xml_dataset, $this->getConnection()->createDataSet()); - } - - public function testAccountBalanceWithdrawals() - { - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $bank_account->withdrawMoney(100); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $bank_account->withdrawMoney(230); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $bank_account->withdrawMoney(24); - - $xml_dataset = $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-after-withdrawals.xml'); - $this->assertDataSetsEqual($xml_dataset, $this->getConnection()->createDataSet()); - } - - public function testNewAccountCreation() - { - $bank_account = new BankAccount('12345678912345678', $this->pdo); - - $xml_dataset = $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-after-new-account.xml'); - $this->assertDataSetsEqual($xml_dataset, $this->getConnection()->createDataSet()); - } - /* - */ -} diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTestMySQL.php b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTestMySQL.php deleted file mode 100644 index 070a6f5..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/BankAccountDBTestMySQL.php +++ /dev/null @@ -1,143 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -require_once 'BankAccount.php'; - -/** - * Tests for the BankAccount class. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class BankAccountDBTestMySQL extends PHPUnit_Extensions_Database_TestCase -{ - protected $pdo; - - public function __construct() - { - $this->pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'selkirk'); - BankAccount::createTable($this->pdo); - } - - /** - * Returns the test database connection. - * - * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection - */ - protected function getConnection() - { - return $this->createDefaultDBConnection($this->pdo, 'test'); - } - - protected function getDataSet() - { - return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-seed.xml'); - } - - public function testNewAccountBalanceIsInitiallyZero() - { - $bank_account = new BankAccount('12345678912345678', $this->pdo); - $this->assertEquals(0, $bank_account->getBalance()); - } - - public function testOldAccountInfoInitiallySet() - { - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $this->assertEquals(100, $bank_account->getBalance()); - $this->assertEquals('15934903649620486', $bank_account->getAccountNumber()); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $this->assertEquals(1216, $bank_account->getBalance()); - $this->assertEquals('15936487230215067', $bank_account->getAccountNumber()); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $this->assertEquals(89, $bank_account->getBalance()); - $this->assertEquals('12348612357236185', $bank_account->getAccountNumber()); - } - - public function testAccountBalanceDeposits() - { - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $bank_account->depositMoney(100); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $bank_account->depositMoney(230); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $bank_account->depositMoney(24); - - $xml_dataset = $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-after-deposits.xml'); - $this->assertDataSetsEqual($xml_dataset, $this->getConnection()->createDataSet()); - } - - public function testAccountBalanceWithdrawals() - { - $bank_account = new BankAccount('15934903649620486', $this->pdo); - $bank_account->withdrawMoney(100); - - $bank_account = new BankAccount('15936487230215067', $this->pdo); - $bank_account->withdrawMoney(230); - - $bank_account = new BankAccount('12348612357236185', $this->pdo); - $bank_account->withdrawMoney(24); - - $xml_dataset = $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-after-withdrawals.xml'); - $this->assertDataSetsEqual($xml_dataset, $this->getConnection()->createDataSet()); - } - - public function testNewAccountCreation() - { - $bank_account = new BankAccount('12345678912345678', $this->pdo); - - $xml_dataset = $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-after-new-account.xml'); - $this->assertDataSetsEqual($xml_dataset, $this->getConnection()->createDataSet()); - } - /* - */ -} diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-deposits.xml b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-deposits.xml deleted file mode 100644 index ab4f178..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-deposits.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-new-account.xml b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-new-account.xml deleted file mode 100644 index 67517ab..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-new-account.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-withdrawals.xml b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-withdrawals.xml deleted file mode 100644 index bc1c0b6..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-after-withdrawals.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-seed.xml b/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-seed.xml deleted file mode 100644 index deb2eb9..0000000 --- a/vendor/eher/phpunit/src/dbunit/Samples/BankAccountDB/_files/bank-account-seed.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/vendor/eher/phpunit/src/dbunit/Tests/Constraint/TableRowCountTest.php b/vendor/eher/phpunit/src/dbunit/Tests/Constraint/TableRowCountTest.php deleted file mode 100644 index 91e312b..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/Constraint/TableRowCountTest.php +++ /dev/null @@ -1,70 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_Constraint_TableRowCountTest extends PHPUnit_Framework_TestCase -{ - public function testConstraint() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_TableRowCount('name', 42); - $this->assertTrue($constraint->evaluate(42)); - $this->assertFalse($constraint->evaluate(24)); - $this->assertEquals('is equal to expected row count 42', $constraint->toString()); - - try { - $constraint->fail(24, ''); - } - - catch (PHPUnit_Framework_ExpectationFailedException $e) { - $this->assertEquals('Failed asserting that table "name" has 42 rows (actual row count: 24)', $e->getMessage()); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DB/DefaultDatabaseConnectionTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DB/DefaultDatabaseConnectionTest.php deleted file mode 100644 index d09671b..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DB/DefaultDatabaseConnectionTest.php +++ /dev/null @@ -1,27 +0,0 @@ -db = new PDO('sqlite::memory:'); - $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - $this->db->exec('CREATE TABLE test (field1 VARCHAR(100))'); - } - - public function testRowCountForEmptyTableReturnsZero() - { - $conn = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($this->db); - $this->assertEquals(0, $conn->getRowCount('test')); - } - - public function testRowCountForTableWithTwoRowsReturnsTwo() - { - $this->db->exec('INSERT INTO test (field1) VALUES (\'foobar\')'); - $this->db->exec('INSERT INTO test (field1) VALUES (\'foobarbaz\')'); - - $conn = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($this->db); - $this->assertEquals(2, $conn->getRowCount('test')); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/AbstractTableTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/AbstractTableTest.php deleted file mode 100644 index f6b49f5..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/AbstractTableTest.php +++ /dev/null @@ -1,90 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Sebastian Marek - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Sebastian Marek - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_AbstractTableTest extends PHPUnit_Framework_TestCase -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_QueryTable - */ - protected $table; - - public function setUp() - { - $tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table', array('id', 'column1') - ); - - $this->table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($tableMetaData); - - $this->table->addRow(array( - 'id' => 1, - 'column1' => 'randomValue' - )); - } - - /** - * @dataProvider providerTableContainsRow - */ - public function testTableContainsRow($row, $exists) - { - $result = $this->table->assertContainsRow($row); - $this->assertEquals($exists, $result); - } - - public function providerTableContainsRow() - { - return array( - array(array('id' => 1, 'column1' => 'randomValue'), true), - array(array('id' => 1, 'column1' => 'notExistingValue'), false) - ); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/CompositeDataSetTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/CompositeDataSetTest.php deleted file mode 100644 index 0408714..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/CompositeDataSetTest.php +++ /dev/null @@ -1,162 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_CompositeDataSetTest extends PHPUnit_Framework_TestCase -{ - protected $expectedDataSet1; - protected $expectedDataSet2; - protected $expectedDataSet3; - - public function setUp() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - - $table3MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table3', array('table3_id', 'column9', 'column10', 'column11', 'column12') - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - $table3 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table3MetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'tgfahgasdf', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => 'asfgklg' - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'fsdb, ghfdas' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => 'blah', - 'column8' => '43asd "fhgj" sfadh' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => 'blah', - 'column8' => 'thesethasdl -asdflkjsadf asdfsadfhl "adsf, halsdf" sadfhlasdf' - )); - - $table3->addRow(array( - 'table3_id' => 1, - 'column9' => 'sfgsda', - 'column10' => 16, - 'column11' => 45.57, - 'column12' => 'sdfh .ds,ajfas asdf h' - )); - $table3->addRow(array( - 'table3_id' => 2, - 'column9' => 'afdstgb', - 'column10' => 41, - 'column11' => 46.645, - 'column12' => '87yhasdf sadf yah;/a ' - )); - $table3->addRow(array( - 'table3_id' => 3, - 'column9' => 'gldsf', - 'column10' => 46, - 'column11' => 123.456, - 'column12' => '0y8hosnd a/df7y olgbjs da' - )); - - $this->expectedDataSet1 = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - $this->expectedDataSet2 = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table3)); - $this->expectedDataSet3 = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2, $table3)); - } - - public function testCompositeDataSet() - { - $actual = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet(array($this->expectedDataSet1, $this->expectedDataSet2)); - - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($this->expectedDataSet3, $actual); - } - - /** - * @expectedException InvalidArgumentException - */ - public function testDuplicateTables() - { - new PHPUnit_Extensions_Database_DataSet_CompositeDataSet(array($this->expectedDataSet1, $this->expectedDataSet1)); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/CsvDataSetTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/CsvDataSetTest.php deleted file mode 100644 index 3c90b10..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/CsvDataSetTest.php +++ /dev/null @@ -1,122 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_CsvDataSetTest extends PHPUnit_Framework_TestCase -{ - protected $expectedDataSet; - - public function testCSVDataSet() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'tgfahgasdf', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => 'asfgklg' - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'fsdb, ghfdas' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => 'blah', - 'column8' => '43asd "fhgj" sfadh' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => 'blah', - 'column8' => 'thesethasdl -asdflkjsadf asdfsadfhl "adsf, halsdf" sadfhlasdf' - )); - - $expectedDataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - - $csvDataSet = new PHPUnit_Extensions_Database_DataSet_CsvDataSet(); - $csvDataSet->addTable('table1', dirname(__FILE__).'/../_files/CsvDataSets/table1.csv'); - $csvDataSet->addTable('table2', dirname(__FILE__).'/../_files/CsvDataSets/table2.csv'); - - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($expectedDataSet, $csvDataSet); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/FilterTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/FilterTest.php deleted file mode 100644 index ca5f217..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/FilterTest.php +++ /dev/null @@ -1,127 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_FilterTest extends PHPUnit_Framework_TestCase -{ - protected $expectedDataSet; - - public function setUp() - { - $this->expectedDataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet( - dirname(__FILE__).'/../_files/XmlDataSets/FilteredTestFixture.xml' - ); - } - - public function testDeprecatedFilteredDataSetConstructor() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet); - $dataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet( - dirname(__FILE__).'/../_files/XmlDataSets/FilteredTestComparison.xml' - ); - - $filteredDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet, array( - 'table1' => array('table1_id'), - 'table2' => '*', - 'table3' => 'table3_id' - )); - - self::assertThat($filteredDataSet, $constraint); - } - - public function testExcludeFilteredDataSet() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet); - $dataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet( - dirname(__FILE__).'/../_files/XmlDataSets/FilteredTestComparison.xml' - ); - - $filteredDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); - - $filteredDataSet->addExcludeTables(array('table2')); - $filteredDataSet->setExcludeColumnsForTable('table1', array('table1_id')); - $filteredDataSet->setExcludeColumnsForTable('table3', array('table3_id')); - - self::assertThat($filteredDataSet, $constraint); - } - - public function testIncludeFilteredDataSet() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet); - $dataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet( - dirname(__FILE__).'/../_files/XmlDataSets/FilteredTestComparison.xml' - ); - - $filteredDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); - - $filteredDataSet->addIncludeTables(array('table1', 'table3')); - $filteredDataSet->setIncludeColumnsForTable('table1', array('column1', 'column2', 'column3', 'column4')); - $filteredDataSet->setIncludeColumnsForTable('table3', array('column9', 'column10', 'column11', 'column12')); - - self::assertThat($filteredDataSet, $constraint); - } - - public function testIncludeExcludeMixedDataSet() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet); - $dataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet( - dirname(__FILE__).'/../_files/XmlDataSets/FilteredTestComparison.xml' - ); - - $filteredDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); - - $filteredDataSet->addIncludeTables(array('table1', 'table3')); - $filteredDataSet->setExcludeColumnsForTable('table1', array('table1_id')); - $filteredDataSet->setIncludeColumnsForTable('table3', array('column9', 'column10', 'column11', 'column12')); - - self::assertThat($filteredDataSet, $constraint); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/PersistorTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/PersistorTest.php deleted file mode 100644 index 560b096..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/PersistorTest.php +++ /dev/null @@ -1,104 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_PersistorTest extends PHPUnit_Framework_TestCase -{ - public function testFlatXml() - { - $dataSetFile = dirname(__FILE__).'/../_files/XmlDataSets/FlatXmlWriter.xml'; - $filename = dirname(__FILE__).'/'.uniqid().'.xml'; - $dataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet($dataSetFile); - - PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet::write($dataSet, $filename); - $this->assertXmlFileEqualsXmlFile($dataSetFile, $filename); - unlink($filename); - } - - public function testXml() - { - $dataSetFile = dirname(__FILE__).'/../_files/XmlDataSets/XmlWriter.xml'; - $filename = dirname(__FILE__).'/'.uniqid().'.xml'; - $dataSet = new PHPUnit_Extensions_Database_DataSet_XmlDataSet($dataSetFile); - - PHPUnit_Extensions_Database_DataSet_XmlDataSet::write($dataSet, $filename); - $this->assertXmlFileEqualsXmlFile($dataSetFile, $filename); - unlink($filename); - } - - public function testEntitiesFlatXml() - { - $metaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', array('col1', 'col2'), array('col1')); - $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($metaData); - $table->addRow(array('col1' => 1, 'col2' => 'test')); - $dataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table)); - - $expectedFile = dirname(__FILE__).'/../_files/XmlDataSets/FlatXmlWriterEntities.xml'; - $filename = dirname(__FILE__).'/'.uniqid().'.xml'; - PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet::write($dataSet, $filename); - $this->assertXmlFileEqualsXmlFile($expectedFile, $filename); - unlink($filename); - } - - public function testEntitiesXml() - { - $metaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', array('col1', 'col2'), array('col1')); - $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($metaData); - $table->addRow(array('col1' => 1, 'col2' => 'test')); - $dataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table)); - - $expectedFile = dirname(__FILE__).'/../_files/XmlDataSets/XmlWriterEntities.xml'; - $filename = dirname(__FILE__).'/'.uniqid().'.xml'; - PHPUnit_Extensions_Database_DataSet_XmlDataSet::write($dataSet, $filename); - $this->assertXmlFileEqualsXmlFile($expectedFile, $filename); - unlink($filename); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryDataSetTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryDataSetTest.php deleted file mode 100644 index 4dbf74a..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryDataSetTest.php +++ /dev/null @@ -1,133 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_QueryDataSetTest extends PHPUnit_Extensions_Database_TestCase -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_QueryDataSet - */ - protected $dataSet; - - protected $pdo; - - /** - * @return PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection - */ - protected function getConnection() - { - return $this->createDefaultDBConnection($this->pdo, 'test'); - } - - protected function getDataSet() - { - return $this->createFlatXMLDataSet(dirname(__FILE__).'/../_files/XmlDataSets/QueryDataSetTest.xml'); - } - - public function setUp() - { - $this->pdo = DBUnitTestUtility::getSQLiteMemoryDB(); - parent::setUp(); - $this->dataSet = new PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection()); - $this->dataSet->addTable('table1'); - $this->dataSet->addTable('query1', ' - SELECT - t1.column1 tc1, t2.column5 tc2 - FROM - table1 t1 - JOIN table2 t2 ON t1.table1_id = t2.table2_id - '); - } - - public function testGetTable() - { - $expectedTable1 = $this->getConnection()->createDataSet(array('table1'))->getTable('table1'); - - $expectedTable2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('query1', array('tc1', 'tc2')) - ); - - $expectedTable2->addRow(array('tc1' => 'bar', 'tc2' => 'blah')); - - $this->assertTablesEqual($expectedTable1, $this->dataSet->getTable('table1')); - $this->assertTablesEqual($expectedTable2, $this->dataSet->getTable('query1')); - } - - public function testGetTableNames() - { - $this->assertEquals(array('table1', 'query1'), $this->dataSet->getTableNames()); - } - - public function testCreateIterator() - { - $expectedTable1 = $this->getConnection()->createDataSet(array('table1'))->getTable('table1'); - - $expectedTable2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('query1', array('tc1', 'tc2')) - ); - - $expectedTable2->addRow(array('tc1' => 'bar', 'tc2' => 'blah')); - - foreach ($this->dataSet as $i => $table) { - /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */ - switch ($table->getTableMetaData()->getTableName()) { - case 'table1': - $this->assertTablesEqual($expectedTable1, $table); - break; - case 'query1': - $this->assertTablesEqual($expectedTable2, $table); - break; - default: - $this->fail('Proper keys not present from the iterator'); - } - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryTableTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryTableTest.php deleted file mode 100644 index d339eba..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/QueryTableTest.php +++ /dev/null @@ -1,132 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_QueryTableTest extends PHPUnit_Framework_TestCase -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_QueryTable - */ - protected $table; - - public function setUp() - { - $query = " - SELECT - 'value1' as col1, - 'value2' as col2, - 'value3' as col3 - UNION SELECT - 'value4' as col1, - 'value5' as col2, - 'value6' as col3 - "; - $this->table = new PHPUnit_Extensions_Database_DataSet_QueryTable( - 'table1', - $query, - new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection(new PDO('sqlite::memory:'), 'test') - ); - } - - public static function providerTestGetValue() - { - return array( - array(0, 'col1', 'value1'), - array(0, 'col2', 'value2'), - array(0, 'col3', 'value3'), - array(1, 'col1', 'value4'), - array(1, 'col2', 'value5'), - array(1, 'col3', 'value6'), - ); - } - - public function testGetTableMetaData() - { - $metaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', array('col1', 'col2', 'col3')); - - $this->assertEquals($metaData, $this->table->getTableMetaData()); - } - - public function testGetRowCount() - { - $this->assertEquals(2, $this->table->getRowCount()); - } - - /** - * @dataProvider providerTestGetValue - */ - public function testGetValue($row, $column, $value) - { - $this->assertEquals($value, $this->table->getValue($row, $column)); - } - - public function testGetRow() - { - $this->assertEquals(array('col1' => 'value1', 'col2' => 'value2', 'col3' => 'value3'), $this->table->getRow(0)); - } - - public function testAssertEquals() - { - $expected_table = new PHPUnit_Extensions_Database_DataSet_DefaultTable(new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', array('col1', 'col2', 'col3'))); - $expected_table->addRow(array('col1' => 'value1', 'col2' => 'value2', 'col3' => 'value3')); - $expected_table->addRow(array('col1' => 'value4', 'col2' => 'value5', 'col3' => 'value6')); - $this->assertTrue($this->table->matches($expected_table)); - } - - public function testAssertEqualsFails() - { - $expected_table = new PHPUnit_Extensions_Database_DataSet_DefaultTable(new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', array('col1', 'col2', 'col3'))); - $expected_table->addRow(array('col1' => 'value1', 'col2' => 'value2', 'col3' => 'value3')); - $expected_table->addRow(array('col1' => 'value4', 'col2' => 'value5', 'col3' => 'value6')); - $expected_table->addRow(array('col1' => 'value7', 'col2' => 'value8', 'col3' => 'value9')); - $this->assertFalse($this->table->matches($expected_table)); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementDataSetTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementDataSetTest.php deleted file mode 100644 index 5c29d85..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementDataSetTest.php +++ /dev/null @@ -1,318 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_ReplacementDataSetTest extends PHPUnit_Framework_TestCase -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_DefaultDataSet - */ - protected $startingDataSet; - - public function setUp() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is %%%name%%%', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => '[NULL]' - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'My name is %%%name%%%' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => '[NULL]', - 'column8' => '43asdfhgj' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => '[NULL]', - 'column8' => '[NULL] not really' - )); - - $this->startingDataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - } - - public function testNoReplacement() - { - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual( - $this->startingDataSet, - new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->startingDataSet) - ); - } - - public function testFullReplacement() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is %%%name%%%', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => NULL - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'My name is %%%name%%%' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => NULL, - 'column8' => '43asdfhgj' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => NULL, - 'column8' => '[NULL] not really' - )); - - $expected = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->startingDataSet); - $actual->addFullReplacement('[NULL]', NULL); - - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($expected, $actual); - } - - public function testSubStrReplacement() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is Mike Lively', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => '[NULL]' - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'My name is Mike Lively' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => '[NULL]', - 'column8' => '43asdfhgj' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => '[NULL]', - 'column8' => '[NULL] not really' - )); - - $expected = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($this->startingDataSet); - $actual->addSubStrReplacement('%%%name%%%', 'Mike Lively'); - - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($expected, $actual); - } - - public function testConstructorReplacements() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is Mike Lively', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => NULL - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'My name is Mike Lively' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => NULL, - 'column8' => '43asdfhgj' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => NULL, - 'column8' => '[NULL] not really' - )); - - $expected = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet( - $this->startingDataSet, - array('[NULL]' => NULL), - array('%%%name%%%' => 'Mike Lively') - ); - - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($expected, $actual); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementTableTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementTableTest.php deleted file mode 100644 index 840a24c..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/ReplacementTableTest.php +++ /dev/null @@ -1,254 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_ReplacementTableTest extends PHPUnit_Framework_TestCase -{ - /** - * @var PHPUnit_Extensions_Database_DataSet_DefaultTable - */ - protected $startingTable; - - public function setUp() - { - $tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - - $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($tableMetaData); - - $table->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is %%%name%%%', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => '[NULL] not really', - 'column4' => '[NULL]' - )); - - $this->startingTable = $table; - } - - public function testNoReplacement() - { - PHPUnit_Extensions_Database_TestCase::assertTablesEqual( - $this->startingTable, - new PHPUnit_Extensions_Database_DataSet_ReplacementTable($this->startingTable) - ); - } - - public function testFullReplacement() - { - $tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - - $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($tableMetaData); - - $table->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is %%%name%%%', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => '[NULL] not really', - 'column4' => NULL - )); - - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementTable($this->startingTable); - $actual->addFullReplacement('[NULL]', NULL); - - PHPUnit_Extensions_Database_TestCase::assertTablesEqual($table, $actual); - } - - public function testSubStrReplacement() - { - $tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - - $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($tableMetaData); - - $table->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is Mike Lively', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => '[NULL] not really', - 'column4' => '[NULL]' - )); - - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementTable($this->startingTable); - $actual->addSubStrReplacement('%%%name%%%', 'Mike Lively'); - - PHPUnit_Extensions_Database_TestCase::assertTablesEqual($table, $actual); - } - - public function testConstructorReplacements() - { - $tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - - $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($tableMetaData); - - $table->addRow(array( - 'table1_id' => 1, - 'column1' => 'My name is Mike Lively', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => '[NULL] not really', - 'column4' => NULL - )); - - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementTable( - $this->startingTable, - array('[NULL]' => NULL), - array('%%%name%%%' => 'Mike Lively') - ); - - PHPUnit_Extensions_Database_TestCase::assertTablesEqual($table, $actual); - } - - public function testGetRow() - { - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementTable( - $this->startingTable, - array('[NULL]' => NULL), - array('%%%name%%%' => 'Mike Lively') - ); - - $this->assertEquals( - array( - 'table1_id' => 1, - 'column1' => 'My name is Mike Lively', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - ), - $actual->getRow(0) - ); - - $this->assertEquals( - array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => '[NULL] not really', - 'column4' => NULL - ), - $actual->getRow(2) - ); - } - - public function testGetValue() - { - $actual = new PHPUnit_Extensions_Database_DataSet_ReplacementTable( - $this->startingTable, - array('[NULL]' => NULL), - array('%%%name%%%' => 'Mike Lively') - ); - - $this->assertNull($actual->getValue(2, 'column4')); - $this->assertEquals('My name is Mike Lively', $actual->getValue(0, 'column1')); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/XmlDataSetsTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/XmlDataSetsTest.php deleted file mode 100644 index 4993fd6..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/XmlDataSetsTest.php +++ /dev/null @@ -1,139 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_XmlDataSetsTest extends PHPUnit_Framework_TestCase -{ - protected $expectedDataSet; - - public function setUp() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'tgfahgasdf', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => 'asfgklg' - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'fsdbghfdas' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => NULL, - 'column8' => '43asdfhgj' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => NULL, - 'column8' => NULL - )); - - $this->expectedDataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - } - - public function testFlatXmlDataSet() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet); - $xmlFlatDataSet = new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/FlatXmlDataSet.xml'); - - self::assertThat($xmlFlatDataSet, $constraint); - } - - public function testXmlDataSet() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet); - $xmlDataSet = new PHPUnit_Extensions_Database_DataSet_XmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/XmlDataSet.xml'); - - self::assertThat($xmlDataSet, $constraint); - } - - public function testMysqlXmlDataSet() - { - $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($this->expectedDataSet); - $mysqlXmlDataSet = new PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/MysqlXmlDataSet.xml'); - - self::assertThat($mysqlXmlDataSet, $constraint); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/YamlDataSetTest.php b/vendor/eher/phpunit/src/dbunit/Tests/DataSet/YamlDataSetTest.php deleted file mode 100644 index 2f7f1eb..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/DataSet/YamlDataSetTest.php +++ /dev/null @@ -1,127 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_DataSet_YamlDataSetTest extends PHPUnit_Framework_TestCase -{ - protected $expectedDataSet; - - public function testYamlDataSet() - { - $table1MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table1', array('table1_id', 'column1', 'column2', 'column3', 'column4', 'extraColumn') - ); - $table2MetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'table2', array('table2_id', 'column5', 'column6', 'column7', 'column8') - ); - $emptyTableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( - 'emptyTable', array() - ); - - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table1MetaData); - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable($table2MetaData); - $emptyTable = new PHPUnit_Extensions_Database_DataSet_DefaultTable($emptyTableMetaData); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'tgfahgasdf', - 'column2' => 200, - 'column3' => 34.64, - 'column4' => 'yghkf;a hahfg8ja h;' - )); - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'hk;afg', - 'column2' => 654, - 'column3' => 46.54, - 'column4' => '24rwehhads', - 'extraColumn' => 'causes no worries' - )); - $table1->addRow(array( - 'table1_id' => 3, - 'column1' => 'ha;gyt', - 'column2' => 462, - 'column3' => 1654.4, - 'column4' => 'asfgklg' - )); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fhah', - 'column6' => 456, - 'column7' => 46.5, - 'column8' => 'fsdb, ghfdas' - )); - $table2->addRow(array( - 'table2_id' => 2, - 'column5' => 'asdhfoih', - 'column6' => 654, - 'column7' => 'blah', - 'column8' => '43asd "fhgj" sfadh' - )); - $table2->addRow(array( - 'table2_id' => 3, - 'column5' => 'ajsdlkfguitah', - 'column6' => 654, - 'column7' => 'blah', - 'column8' => 'thesethasdl -asdflkjsadf asdfsadfhl "adsf, halsdf" sadfhlasdf' - )); - - $expectedDataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2, $emptyTable)); - - $yamlDataSet = new PHPUnit_Extensions_Database_DataSet_YamlDataSet(dirname(__FILE__) . '/../_files/YamlDataSets/testDataSet.yaml'); - - PHPUnit_Extensions_Database_DataSet_YamlDataSet::write($yamlDataSet, sys_get_temp_dir() . '/yaml.dataset'); - - PHPUnit_Extensions_Database_TestCase::assertDataSetsEqual($expectedDataSet, $yamlDataSet); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsMySQLTest.php b/vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsMySQLTest.php deleted file mode 100644 index 61709e2..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsMySQLTest.php +++ /dev/null @@ -1,107 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Sebastian Marek - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version SVN: $Id$ - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DatabaseTestUtility.php'; - -/** - * @package DbUnit - * @author Sebastian Marek - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version SVN: $Id$ - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_Operation_OperationsMySQLTest extends PHPUnit_Extensions_Database_TestCase -{ - protected function setUp() - { - if (!extension_loaded('pdo_mysql')) { - $this->markTestSkipped('pdo_mysql is required to run this test.'); - } - - if (!defined('PHPUNIT_TESTSUITE_EXTENSION_DATABASE_MYSQL')) { - $this->markTestSkipped('No MySQL server configured for this test.'); - } - - parent::setUp(); - } - - public function getConnection() - { - return new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection(DBUnitTestUtility::getMySQLDB(), 'mysql'); - } - - public function getDataSet() - { - return new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/OperationsMySQLTestFixture.xml'); - } - - /** - * @covers PHPUnit_Extensions_Database_Operation_Truncate::execute - */ - public function testTruncate() - { - $truncateOperation = new PHPUnit_Extensions_Database_Operation_Truncate(); - $truncateOperation->execute($this->getConnection(), $this->getDataSet()); - - $expectedDataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array( - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', - array('table1_id', 'column1', 'column2', 'column3', 'column4')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table2', - array('table2_id', 'table1_id', 'column5', 'column6', 'column7', 'column8')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table3', - array('table3_id', 'table2_id', 'column9', 'column10', 'column11', 'column12')) - ), - )); - - $this->assertDataSetsEqual($expectedDataSet, $this->getConnection()->createDataSet()); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsTest.php b/vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsTest.php deleted file mode 100644 index 8a0bec7..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/Operation/OperationsTest.php +++ /dev/null @@ -1,176 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DatabaseTestUtility.php'; - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_Operation_OperationsTest extends PHPUnit_Extensions_Database_TestCase -{ - protected function setUp() - { - if (!extension_loaded('pdo_sqlite')) { - $this->markTestSkipped('PDO/SQLite is required to run this test.'); - } - - parent::setUp(); - } - - public function getConnection() - { - return new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection(DBUnitTestUtility::getSQLiteMemoryDB(), 'sqlite'); - } - - public function getDataSet() - { - return new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/OperationsTestFixture.xml'); - } - - public function testDelete() - { - $deleteOperation = new PHPUnit_Extensions_Database_Operation_Delete(); - - $deleteOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/DeleteOperationTest.xml')); - - $this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/DeleteOperationResult.xml'), $this->getConnection()->createDataSet()); - } - - public function testDeleteAll() - { - $deleteAllOperation = new PHPUnit_Extensions_Database_Operation_DeleteAll(); - - $deleteAllOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/DeleteAllOperationTest.xml')); - - $expectedDataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array( - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', - array('table1_id', 'column1', 'column2', 'column3', 'column4')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table2', - array('table2_id', 'column5', 'column6', 'column7', 'column8')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table3', - array('table3_id', 'column9', 'column10', 'column11', 'column12')) - ), - )); - - $this->assertDataSetsEqual($expectedDataSet, $this->getConnection()->createDataSet()); - } - - public function testTruncate() - { - $truncateOperation = new PHPUnit_Extensions_Database_Operation_Truncate(); - - $truncateOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/DeleteAllOperationTest.xml')); - - $expectedDataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array( - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', - array('table1_id', 'column1', 'column2', 'column3', 'column4')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table2', - array('table2_id', 'column5', 'column6', 'column7', 'column8')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table3', - array('table3_id', 'column9', 'column10', 'column11', 'column12')) - ), - )); - - $this->assertDataSetsEqual($expectedDataSet, $this->getConnection()->createDataSet()); - } - - public function testInsert() - { - $insertOperation = new PHPUnit_Extensions_Database_Operation_Insert(); - - $insertOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/InsertOperationTest.xml')); - - $this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/InsertOperationResult.xml'), $this->getConnection()->createDataSet()); - } - - public function testUpdate() - { - $updateOperation = new PHPUnit_Extensions_Database_Operation_Update(); - - $updateOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/UpdateOperationTest.xml')); - - $this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/UpdateOperationResult.xml'), $this->getConnection()->createDataSet()); - } - - public function testReplace() - { - $replaceOperation = new PHPUnit_Extensions_Database_Operation_Replace(); - - $replaceOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/ReplaceOperationTest.xml')); - - $this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/ReplaceOperationResult.xml'), $this->getConnection()->createDataSet()); - } - - public function testInsertEmptyTable() - { - $insertOperation = new PHPUnit_Extensions_Database_Operation_Insert(); - - $insertOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/EmptyTableInsertTest.xml')); - - $this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/EmptyTableInsertResult.xml'), $this->getConnection()->createDataSet()); - } - public function testInsertAllEmptyTables() - { - $insertOperation = new PHPUnit_Extensions_Database_Operation_Insert(); - - $insertOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/AllEmptyTableInsertTest.xml')); - - $this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/AllEmptyTableInsertResult.xml'), $this->getConnection()->createDataSet()); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/Operation/RowBasedTest.php b/vendor/eher/phpunit/src/dbunit/Tests/Operation/RowBasedTest.php deleted file mode 100644 index 74567e3..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/Operation/RowBasedTest.php +++ /dev/null @@ -1,174 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DatabaseTestUtility.php'; - - -/** - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ -class Extensions_Database_Operation_RowBasedTest extends PHPUnit_Extensions_Database_TestCase -{ - protected function setUp() - { - if (!extension_loaded('pdo_sqlite')) { - $this->markTestSkipped('PDO/SQLite is required to run this test.'); - } - - parent::setUp(); - } - - public function getConnection() - { - return new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection(DBUnitTestUtility::getSQLiteMemoryDB(), 'sqlite'); - } - - public function getDataSet() - { - $tables = array( - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', - array('table1_id', 'column1', 'column2', 'column3', 'column4')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table2', - array('table2_id', 'column5', 'column6', 'column7', 'column8')) - ), - new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table3', - array('table3_id', 'column9', 'column10', 'column11', 'column12')) - ), - ); - - return new PHPUnit_Extensions_Database_DataSet_DefaultDataSet($tables); - } - - public function testExcecute() - { - $connection = $this->getConnection(); - /* @var $connection PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection */ - $table1 = new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table1', array('table1_id', 'column1', 'column2', 'column3', 'column4')) - ); - - $table1->addRow(array( - 'table1_id' => 1, - 'column1' => 'foo', - 'column2' => 42, - 'column3' => 4.2, - 'column4' => 'bar' - )); - - $table1->addRow(array( - 'table1_id' => 2, - 'column1' => 'qwerty', - 'column2' => 23, - 'column3' => 2.3, - 'column4' => 'dvorak' - )); - - $table2 = new PHPUnit_Extensions_Database_DataSet_DefaultTable( - new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData('table2', array('table2_id', 'column5', 'column6', 'column7', 'column8')) - ); - - $table2->addRow(array( - 'table2_id' => 1, - 'column5' => 'fdyhkn', - 'column6' => 64, - 'column7' => 4568.64, - 'column8' => 'hkladfg' - )); - - $dataSet = new PHPUnit_Extensions_Database_DataSet_DefaultDataSet(array($table1, $table2)); - - $mockOperation = $this->getMock('PHPUnit_Extensions_Database_Operation_RowBased', - array('buildOperationQuery', 'buildOperationArguments')); - - /* @var $mockOperation PHPUnit_Framework_MockObject_MockObject */ - $mockOperation->expects($this->at(0)) - ->method('buildOperationQuery') - ->with($connection->createDataSet()->getTableMetaData('table1'), $table1) - ->will( - $this->returnValue('INSERT INTO table1 (table1_id, column1, column2, column3, column4) VALUES (?, ?, ?, ?, ?)') - ); - - $mockOperation->expects($this->at(1)) - ->method('buildOperationArguments') - ->with($connection->createDataSet()->getTableMetaData('table1'), $table1, 0) - ->will( - $this->returnValue(array(1, 'foo', 42, 4.2, 'bar')) - ); - - $mockOperation->expects($this->at(2)) - ->method('buildOperationArguments') - ->with($connection->createDataSet()->getTableMetaData('table1'), $table1, 1) - ->will( - $this->returnValue(array(2, 'qwerty', 23, 2.3, 'dvorak')) - ); - - $mockOperation->expects($this->at(3)) - ->method('buildOperationQuery') - ->with($connection->createDataSet()->getTableMetaData('table2'), $table2) - ->will( - $this->returnValue('INSERT INTO table2 (table2_id, column5, column6, column7, column8) VALUES (?, ?, ?, ?, ?)') - ); - - $mockOperation->expects($this->at(4)) - ->method('buildOperationArguments') - ->with($connection->createDataSet()->getTableMetaData('table2'), $table2, 0) - ->will( - $this->returnValue(array(1, 'fdyhkn', 64, 4568.64, 'hkladfg')) - ); - - /* @var $mockOperation PHPUnit_Extensions_Database_Operation_RowBased */ - $mockOperation->execute($connection, $dataSet); - - $this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/RowBasedExecute.xml'), $connection->createDataSet(array('table1', 'table2'))); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table1.csv b/vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table1.csv deleted file mode 100644 index 345520d..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table1.csv +++ /dev/null @@ -1,4 +0,0 @@ -table1_id,column1,column2,column3,column4 -1,tgfahgasdf,200,34.64,"yghkf;a hahfg8ja h;" -2,hk;afg,654,46.54,24rwehhads -3,ha;gyt,462,1654.4,asfgklg \ No newline at end of file diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table2.csv b/vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table2.csv deleted file mode 100644 index 3f1142c..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/CsvDataSets/table2.csv +++ /dev/null @@ -1,5 +0,0 @@ -table2_id,column5,column6,column7,column8 -1,fhah,456,46.5,"fsdb, ghfdas" -2,asdhfoih,654,blah,"43asd ""fhgj"" sfadh" -3,ajsdlkfguitah,654,blah,"thesethasdl -asdflkjsadf asdfsadfhl ""adsf, halsdf"" sadfhlasdf" \ No newline at end of file diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/DatabaseTestUtility.php b/vendor/eher/phpunit/src/dbunit/Tests/_files/DatabaseTestUtility.php deleted file mode 100644 index c118750..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/DatabaseTestUtility.php +++ /dev/null @@ -1,172 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package DbUnit - * @author Mike Lively - * @copyright 2002-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://www.phpunit.de/ - * @since File available since Release 1.0.0 - */ - -/** - * - * @package DbUnit - * @author Mike Lively - * @copyright 2010 Mike Lively - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.2 - * @link http://www.phpunit.de/ - * @since Class available since Release 1.0.0 - */ -class DBUnitTestUtility -{ - protected static $connection; - - public static function getSQLiteMemoryDB() - { - if (self::$connection === NULL) { - self::$connection = new PDO('sqlite::memory:'); - self::setUpDatabase(self::$connection); - } - - return self::$connection; - } - - /** - * Creates connection to test MySQL database - * - * MySQL server must be installed locally, with root access - * and empty password and listening on unix socket - * - * @return PDO - * @see DBUnitTestUtility::setUpMySqlDatabase() - */ - public static function getMySQLDB() - { - if (self::$connection === NULL) { - $connection = new PDO(PHPUNIT_TESTSUITE_EXTENSION_DATABASE_MYSQL); - - self::setUpMySQLDatabase($connection); - } - - return self::$connection; - } - - protected static function setUpDatabase(PDO $connection) - { - $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - $connection->exec( - 'CREATE TABLE IF NOT EXISTS table1 ( - table1_id INTEGER PRIMARY KEY AUTOINCREMENT, - column1 VARCHAR(20), - column2 INT(10), - column3 DECIMAL(6,2), - column4 TEXT - )' - ); - - $connection->exec( - 'CREATE TABLE IF NOT EXISTS table2 ( - table2_id INTEGER PRIMARY KEY AUTOINCREMENT, - column5 VARCHAR(20), - column6 INT(10), - column7 DECIMAL(6,2), - column8 TEXT - )' - ); - - $connection->exec( - 'CREATE TABLE IF NOT EXISTS table3 ( - table3_id INTEGER PRIMARY KEY AUTOINCREMENT, - column9 VARCHAR(20), - column10 INT(10), - column11 DECIMAL(6,2), - column12 TEXT - )' - ); - } - - /** - * Creates default testing schema for MySQL database - * - * Tables must containt foreign keys and use InnoDb storage engine - * for constraint tests to be executed properly - * - * @param PDO $connection PDO instance representing connection to MySQL database - * @see DBUnitTestUtility::getMySQLDB() - */ - protected static function setUpMySqlDatabase(PDO $connection) - { - $connection->exec( - 'CREATE TABLE IF NOT EXISTS table1 ( - table1_id INTEGER AUTO_INCREMENT, - column1 VARCHAR(20), - column2 INT(10), - column3 DECIMAL(6,2), - column4 TEXT, - PRIMARY KEY (table1_id) - ) ENGINE=INNODB; - '); - - $connection->exec( - 'CREATE TABLE IF NOT EXISTS table2 ( - table2_id INTEGER AUTO_INCREMENT, - table1_id INTEGER, - column5 VARCHAR(20), - column6 INT(10), - column7 DECIMAL(6,2), - column8 TEXT, - PRIMARY KEY (table2_id), - FOREIGN KEY (table1_id) REFERENCES table1(table1_id) - ) ENGINE=INNODB; - '); - - $connection->exec( - 'CREATE TABLE IF NOT EXISTS table3 ( - table3_id INTEGER AUTO_INCREMENT, - table2_id INTEGER, - column9 VARCHAR(20), - column10 INT(10), - column11 DECIMAL(6,2), - column12 TEXT, - PRIMARY KEY (table3_id), - FOREIGN KEY (table2_id) REFERENCES table2(table2_id) - ) ENGINE=INNODB; - '); - } -} diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertResult.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertResult.xml deleted file mode 100644 index 7e40214..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertResult.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertTest.xml deleted file mode 100644 index dda12a0..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/AllEmptyTableInsertTest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteAllOperationTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteAllOperationTest.xml deleted file mode 100644 index d82980d..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteAllOperationTest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationResult.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationResult.xml deleted file mode 100644 index d7e31bc..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationResult.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationTest.xml deleted file mode 100644 index d1e0b98..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/DeleteOperationTest.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertResult.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertResult.xml deleted file mode 100644 index 38f3b03..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertResult.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertTest.xml deleted file mode 100644 index 5bcbdb7..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/EmptyTableInsertTest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestComparison.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestComparison.xml deleted file mode 100644 index 7e40214..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestComparison.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestFixture.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestFixture.xml deleted file mode 100644 index 7087c76..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FilteredTestFixture.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlDataSet.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlDataSet.xml deleted file mode 100644 index c180dce..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlDataSet.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriter.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriter.xml deleted file mode 100644 index faf98ac..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriter.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriterEntities.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriterEntities.xml deleted file mode 100644 index d9fdce1..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/FlatXmlWriterEntities.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationResult.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationResult.xml deleted file mode 100644 index 8c6edac..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationResult.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationTest.xml deleted file mode 100644 index 38af84c..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/InsertOperationTest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/MysqlXmlDataSet.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/MysqlXmlDataSet.xml deleted file mode 100644 index 059b286..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/MysqlXmlDataSet.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - 1 - tgfahgasdf - 200 - 34.64 - yghkf;a hahfg8ja h; - - - 2 - hk;afg - 654 - 46.54 - 24rwehhads - - - 3 - ha;gyt - 462 - 1654.4 - asfgklg - - - - - 1 - fhah - 456 - 46.5 - fsdbghfdas - - - 2 - asdhfoih - 654 - - 43asdfhgj - - - 3 - ajsdlkfguitah - 654 - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsMySQLTestFixture.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsMySQLTestFixture.xml deleted file mode 100644 index 52bcc54..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsMySQLTestFixture.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsTestFixture.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsTestFixture.xml deleted file mode 100644 index 7e40214..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/OperationsTestFixture.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/QueryDataSetTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/QueryDataSetTest.xml deleted file mode 100644 index 43fb871..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/QueryDataSetTest.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationResult.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationResult.xml deleted file mode 100644 index d5754d4..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationResult.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationTest.xml deleted file mode 100644 index 27c5bdb..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/ReplaceOperationTest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/RowBasedExecute.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/RowBasedExecute.xml deleted file mode 100644 index 1ff4708..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/RowBasedExecute.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationResult.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationResult.xml deleted file mode 100644 index e00a927..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationResult.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationTest.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationTest.xml deleted file mode 100644 index f3eee91..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/UpdateOperationTest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlDataSet.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlDataSet.xml deleted file mode 100644 index df57efd..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlDataSet.xml +++ /dev/null @@ -1,65 +0,0 @@ - - -
- table1_id - column1 - column2 - column3 - column4 - - 1 - tgfahgasdf - 200 - 34.64 - yghkf;a hahfg8ja h; - - - 2 - hk;afg - 654 - 46.54 - 24rwehhads - - - 3 - ha;gyt - 462 - 1654.4 - asfgklg - -
- - table2_id - column5 - column6 - column7 - column8 - - 1 - fhah - 456 - 46.5 - fsdbghfdas - - - 2 - asdhfoih - 654 - - 43asdfhgj - - - 3 - ajsdlkfguitah - 654 - - - -
- - - - - - -
diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriter.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriter.xml deleted file mode 100644 index 57ef599..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriter.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - col1 - col2 - col3 - - val1 - val2 - val3 - - - - - val4 - - - val5 - val6 - val7 - -
- - col1 - col2 - col3 -
-
diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriterEntities.xml b/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriterEntities.xml deleted file mode 100644 index ed746d9..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/XmlDataSets/XmlWriterEntities.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - col1 - col2 - - 1 - <?xml version="1.0"?><myxml>test</myxml> - -
-
diff --git a/vendor/eher/phpunit/src/dbunit/Tests/_files/YamlDataSets/testDataSet.yaml b/vendor/eher/phpunit/src/dbunit/Tests/_files/YamlDataSets/testDataSet.yaml deleted file mode 100644 index 5c44c6e..0000000 --- a/vendor/eher/phpunit/src/dbunit/Tests/_files/YamlDataSets/testDataSet.yaml +++ /dev/null @@ -1,44 +0,0 @@ -table1: - - - table1_id: 1 - column1: "tgfahgasdf" - column2: 200 - column3: 34.64 - column4: "yghkf;a hahfg8ja h;" - - - table1_id: 2 - column1: "hk;afg" - column2: 654 - column3: 46.54 - column4: 24rwehhads - extraColumn: 'causes no worries' - - - table1_id: 3 - column1: ha;gyt - column2: 462 - column3: 1654.4 - column4: asfgklg -table2: - - - table2_id: 1 - column5: fhah - column6: 456 - column7: 46.5 - column8: "fsdb, ghfdas" - - - table2_id: 2 - column5: asdhfoih - column6: 654 - column7: blah - column8: "43asd \"fhgj\" sfadh" - - - table2_id: 3 - column5: ajsdlkfguitah - column6: 654 - column7: blah - column8: |- - thesethasdl - asdflkjsadf asdfsadfhl "adsf, halsdf" sadfhlasdf - -emptyTable: - diff --git a/vendor/eher/phpunit/src/dbunit/build.xml b/vendor/eher/phpunit/src/dbunit/build.xml deleted file mode 100644 index 22189ee..0000000 --- a/vendor/eher/phpunit/src/dbunit/build.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php b/vendor/eher/phpunit/src/dbunit/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php deleted file mode 100644 index bf9d520..0000000 --- a/vendor/eher/phpunit/src/dbunit/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php +++ /dev/null @@ -1,22 +0,0 @@ -getTokens(); - - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE || - $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - - $phpcsFile->addError( - 'Concatenation operator must be surrounded by whitespace', - $stackPtr - ); - } - } -} diff --git a/vendor/eher/phpunit/src/dbunit/build/PHPCS/ruleset.xml b/vendor/eher/phpunit/src/dbunit/build/PHPCS/ruleset.xml deleted file mode 100644 index 402f214..0000000 --- a/vendor/eher/phpunit/src/dbunit/build/PHPCS/ruleset.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - Sebastian Bergmann's coding standard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/build/phpmd.xml b/vendor/eher/phpunit/src/dbunit/build/phpmd.xml deleted file mode 100644 index 23ecb8b..0000000 --- a/vendor/eher/phpunit/src/dbunit/build/phpmd.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - Sebastian Bergmann's ruleset - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/dbunit.bat b/vendor/eher/phpunit/src/dbunit/dbunit.bat deleted file mode 100644 index 93a58bc..0000000 --- a/vendor/eher/phpunit/src/dbunit/dbunit.bat +++ /dev/null @@ -1,43 +0,0 @@ -@echo off -REM PHPUnit -REM -REM Copyright (c) 2002-2010, Sebastian Bergmann . -REM All rights reserved. -REM -REM Redistribution and use in source and binary forms, with or without -REM modification, are permitted provided that the following conditions -REM are met: -REM -REM * Redistributions of source code must retain the above copyright -REM notice, this list of conditions and the following disclaimer. -REM -REM * Redistributions in binary form must reproduce the above copyright -REM notice, this list of conditions and the following disclaimer in -REM the documentation and/or other materials provided with the -REM distribution. -REM -REM * Neither the name of Sebastian Bergmann nor the names of his -REM contributors may be used to endorse or promote products derived -REM from this software without specific prior written permission. -REM -REM THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -REM "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -REM LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -REM FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -REM COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -REM INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -REM BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -REM LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -REM CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC -REM LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -REM ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -REM POSSIBILITY OF SUCH DAMAGE. -REM - -if "%PHPBIN%" == "" set PHPBIN=@php_bin@ -if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH -GOTO RUN -:USE_PEAR_PATH -set PHPBIN=%PHP_PEAR_PHP_BIN% -:RUN -"%PHPBIN%" "@bin_dir@\dbunit" %* diff --git a/vendor/eher/phpunit/src/dbunit/dbunit.php b/vendor/eher/phpunit/src/dbunit/dbunit.php deleted file mode 100755 index 37e7aab..0000000 --- a/vendor/eher/phpunit/src/dbunit/dbunit.php +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env php -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -if (strpos('@php_bin@', '@php_bin') === 0) { - set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path()); -} - -require_once 'PHPUnit/Autoload.php'; - -PHP_CodeCoverage_Filter::getInstance()->addFileToBlacklist(__FILE__, 'PHPUNIT'); - -$command = new PHPUnit_Extensions_Database_UI_Command( - new PHPUnit_Extensions_Database_UI_ModeFactory() -); - -$command->main( - new PHPUnit_Extensions_Database_UI_Mediums_Text($_SERVER['argv']), - new PHPUnit_Extensions_Database_UI_Context() -); diff --git a/vendor/eher/phpunit/src/dbunit/package.xml b/vendor/eher/phpunit/src/dbunit/package.xml deleted file mode 100644 index 55700b4..0000000 --- a/vendor/eher/phpunit/src/dbunit/package.xml +++ /dev/null @@ -1,424 +0,0 @@ - - - DbUnit - pear.phpunit.de - DbUnit port for PHP/PHPUnit to support database interaction testing. - DbUnit port for PHP/PHPUnit to support database interaction testing. - - Sebastian Bergmann - sb - sb@sebastian-bergmann.de - yes - - 2012-01-27 - - 1.1.2 - 1.1.0 - - - stable - stable - - The BSD 3-Clause License - http://github.com/sebastianbergmann/dbunit/blob/master/README.markdown - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.2.7 - - - 1.9.4 - - - PHPUnit - pear.phpunit.de - 3.6.0 - - - YAML - pear.symfony-project.com - 1.0.2 - - - pdo - - - reflection - - - simplexml - - - spl - - - - - - - windows - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/dbunit/phpunit.xml.dist b/vendor/eher/phpunit/src/dbunit/phpunit.xml.dist deleted file mode 100644 index 31a5197..0000000 --- a/vendor/eher/phpunit/src/dbunit/phpunit.xml.dist +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - Tests/DataSet - Tests/Operation - Tests/DB - - - - - - - - - - - - PHPUnit - - - diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/autoload.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/autoload.php deleted file mode 100644 index 2e5f4bb..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/autoload.php +++ /dev/null @@ -1,82 +0,0 @@ - '/src/fDOMDocument.php', - 'theseer\\fdom\\fdomdocumentfragment' => '/src/fDOMDocumentFragment.php', - 'theseer\\fdom\\fdomelement' => '/src/fDOMElement.php', - 'theseer\\fdom\\fdomexception' => '/src/fDOMException.php', - 'theseer\\fdom\\fdomfilter' => '/src/fDOMFilter.php', - 'theseer\\fdom\\fdomfilternode' => '/src/fDOMFilter.php', - 'theseer\\fdom\\fdomfilterprocessor' => '/src/fDOMFilter.php', - 'theseer\\fdom\\fdomfilterxhtml' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_a' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_abbr' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_acronym' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_address' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_area' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_b' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_bdo' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_big' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_blockquote' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_body' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_br' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_center' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_cite' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_code' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_dd' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_del' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_dfn' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_dir' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_div' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_dl' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_dt' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_em' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_form' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_h1' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_h2' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_h3' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_h4' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_h5' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_h6' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_head' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_hr' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_html' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_i' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_img' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_input' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_ins' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_kbd' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_label' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_li' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_map' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_menu' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_noscript' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_ol' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_p' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_pre' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_s' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_samp' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_small' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_span' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_strike' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_strong' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_sub' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_sup' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_title' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_tt' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_u' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_ul' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomfilterxhtml_var' => '/src/fDOMFilter/xhtml.php', - 'theseer\\fdom\\fdomnode' => '/src/fDOMNode.php', - 'theseer\\fdom\\fdomxpath' => '/src/fDOMXPath.php' - ); - } - $cn = strtolower($class); - if (isset($classes[$cn])) { - require __DIR__ . $classes[$cn]; - } - } -); diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocument.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocument.php deleted file mode 100644 index f5bafb4..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocument.php +++ /dev/null @@ -1,402 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/theseer/fdomdocument - * - */ - -namespace TheSeer\fDOM { - - /** - * fDOMDocument extension to PHP's DOMDocument. - * This class adds various convenience methods to simplify APIs - * It is set to final since further extending it would even more - * break the Object structure after use of registerNodeClass. - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @access public - * - */ - class fDOMDocument extends \DOMDocument { - - /** - * XPath Object instance - * - * @var fDOMXPath - */ - private $xp = null; - - /** - * List of registered prefixes and their namespace uri - * @var Array - */ - private $prefixes = array(); - - /** - * Extended DOMDocument constructor - * - * @param string $version XML Version, should be 1.0 - * @param string $encoding Encoding, defaults to utf-8 - * @param array $streamOptions optional stream options array - * - * @return fDOMDocument - */ - public function __construct($version = '1.0', $encoding = 'utf-8', $streamOptions = null) { - if (!is_null($streamOptions)) { - $this->setStreamContext($streamOptions); - } - - libxml_use_internal_errors(true); - $rc = parent::__construct($version, $encoding); - - $this->registerNodeClass('\DOMDocument', get_called_class()); - $this->registerNodeClass('\DOMNode', 'TheSeer\fDOM\fDOMNode'); - $this->registerNodeClass('\DOMElement', 'TheSeer\fDOM\fDOMElement'); - $this->registerNodeClass('\DOMDocumentFragment', 'TheSeer\fDOM\fDOMDocumentFragment'); - - return $rc; - } - - /** - * Set Stream context options - * - * @param Array $options Stream context options - * - * @return boolean true on success, false on failure - */ - public function setStreamContext(Array $options) { - if (!count($options)) { - return false; - } - $context = stream_context_create($options); - libxml_set_streams_context($context); - return true; - } - - /** - * Wrapper to DOMDocument load with exception handling - * Returns true on success to satisfy the compatibilty of the original DOM Api - * - * @param string $fname File to load - * @param integer $options LibXML Flags to pass - * - * @return boolean - */ - public function load($fname, $options = LIBXML_NONET) { - $this->xp = null; - $tmp = @parent :: load($fname, $options); - if (!$tmp) { - throw new fDOMException("loading file '$fname' failed.", fDOMException::LoadError); - } - return true; - } - - /** - * Wrapper to DOMDocument loadXML with exception handling - * Returns true on success to satisfy the compatibilty of the original DOM Api - * - * @param string $source XML source code - * @param integer $options LibXML option flags - * - * @return boolean - */ - public function loadXML($source, $options = LIBXML_NONET) { - $this->xp = null; - $tmp = @parent :: loadXML($source, $options); - if (!$tmp) { - throw new fDOMException('parsing string failed', fDOMException::ParseError); - } - return true; - } - - /** - * Wrapper to DOMDocument loadHTMLFile with exception handling. - * Returns true on success to satisfy the compatibilty of the original DOM Api - * - * @param string $fname html file to load - * @param integer $options Options bitmask (@see DOMDocument::loadHTMLFile) - * - * @return boolean - */ - public function loadHTMLFile($fname, $options = NULL) { - $this->xp = null; - $tmp = @parent :: loadHTMLFile($fname, $options); - if (!$tmp) { - throw new fDOMException("loading html file '$fname' failed", fDOMException::LoadError); - } - return true; - } - - /** - * Wrapper to DOMDocument loadHTML with exception handling - * Returns true on success to satisfy the compatibilty of the original DOM Api - * - * @param string $source html source code - * @param integer $options Options bitmask (@see DOMDocument::loadHTML) - * - * @return boolean - */ - public function loadHTML($source, $options = NULL) { - $this->xp = null; - $tmp = @parent :: loadHTML($source, $options); - if (!$tmp) { - throw new fDOMException('parsing html string failed', fDOMException::ParseError); - } - return true; - } - - /** - * Wrapper to DOMDocument::save with exception handling - * - * @param string $fname filename to save to - * @param integer $options Options bitmask (@see DOMDocument::save) - * - * @return integer bytes saved - */ - public function save($filename, $options = NULL) { - $tmp = @parent::save($filename, $options); - if (!$tmp) { - throw new fDOMException('saving xml file failed', fDOMException::SaveError); - } - return $tmp; - } - - /** - * Wrapper to DOMDocument::saveHTML with exception handling - * - * @return string html content - */ - public function saveHTML() { - $tmp = @parent::saveHTML(); - if (!$tmp) { - throw new fDOMException('serializing to HTML failed', fDOMException::SaveError); - } - return $tmp; - } - - /** - * Wrapper to DOMDocument::saveHTMLfile with exception handling - * - * @param string $fname filename to save to - * @param integer $options Options bitmask (@see DOMDocument::saveHTMLFile) - * - * @return integer bytes saved - */ - public function saveHTMLFile($filename, $options = NULL) { - $tmp = @parent::saveHTMLFile($filename, $options); - if (!$tmp) { - throw new fDOMException('saving to HTML file failed', fDOMException::SaveError); - } - return $tmp; - } - - /** - * Wrapper to DOMDocument::saveXML with exception handling - * - * @param \DOMNode context node to start serializing at - * @param integer options options flags as bitmask - * - * @return string serialized XML - */ - public function saveXML(\DOMNode $node = NULL, $options = NULL) { - try { - $tmp = @parent::saveXML($node, $options); - if (!$tmp) { - throw new fDOMException('serializing to XML failed', fDOMException::SaveError); - } - return $tmp; - } catch (\Exception $e) { - if (!$e instanceof fDOMException) { - throw new fDOMException($e->getMessage(), fDOMException::SaveError, $e); - } - throw $e; - } - } - - /** - * get Instance of DOMXPath Object for current DOM - * - * @return DOMXPath - */ - public function getDOMXPath() { - if (is_null($this->xp)) { - $this->xp = new fDOMXPath($this); - } - if (!$this->xp) { - throw new fDOMException('creating DOMXPath object failed.', fDOMException::NoDOMXPath); - } - return $this->xp; - } - - /** - * Convert a given DOMNodeList into a DOMFragment - * - * @param DOMNodeList $list The Nodelist to process - * @param boolean $move Signale if nodes are to be moved into fragment or not - * - * @return DOMDocumentFragment - */ - public function nodeList2Fragment(\DOMNodeList $list, $move=false) { - $frag = $this->createDocumentFragment(); - foreach($list as $node) { - $frag->appendChild($move ? $node : $node->cloneNode(true)); - } - return $frag; - } - - /** - * Perform an xpath query - * - * @param String $q query string containing xpath - * @param DOMNode $ctx (optional) Context DOMNode - * @param boolean $registerNodeNS Register flag pass thru - * - * @return \DOMNodeList - */ - public function query($q, \DOMNode $ctx = null, $registerNodeNS = true) { - if (is_null($this->xp)) { - $this->getDOMXPath(); - } - return $this->xp->evaluate($q, $ctx, $registerNodeNS); - } - - /** - * Perform an xpath query and return only the 1st match - * - * @param String $q query string containing xpath - * @param DOMNode $ctx (optional) Context DOMNode - * @param boolean $registerNodeNS Register flag pass thru - * - * @return fDOMNode - */ - public function queryOne($q, \DOMNode $ctx = null, $registerNodeNS = true) { - if (is_null($this->xp)) { - $this->getDOMXPath(); - } - return $this->xp->queryOne($q, $ctx, $registerNodeNS); - } - - - /** - * Forwarder to fDOMXPath's prepare method allowing for easy and secure - * placeholder replacement comparable to sql's prepared statements - * . - * @param string $xpath String containing xpath with :placeholder markup - * @param array $valueMap Array containing keys (:placeholder) and value pairs to be quoted - */ - public function prepareQuery($xpath, array $valueMap) { - if (is_null($this->xp)) { - $this->getDOMXPath(); - } - return $this->xp->prepare($xpath, $valueMap); - } - - /** - * Forward to DOMXPath->registerNamespace() - * - * @param string $prefix The prefix to use - * @param string $uri The uri to assign to this prefix - * - * @return void - */ - public function registerNamespace($prefix, $uri) { - if (is_null($this->xp)) { - $this->getDOMXPath(); - } - if (!$this->xp->registerNamespace($prefix, $uri)) { - throw new fDOMException("Registering namespace '$uri' with prefix '$prefix' failed.", fDOMException::RegistrationFailed); - } - $this->prefixes[$prefix] = $uri; - } - - /** - * Forward to DOMXPath->registerPHPFunctions() - * - * @param mixed $restrict Array of function names or string with functionname to restrict callabilty to - * - * @return void - */ - public function registerPHPFunctions($restrict = null) { - if (is_null($this->xp)) { - $this->getDOMXPath(); - } - $this->xp->registerPHPFunctions($restrict); - if (libxml_get_last_error()) { - throw new fDOMException("Registering php functions failed.", fDOMException::RegistrationFailed); - } - } - - /** - * Create a new element in namespace defined by given prefix - * - * @param $prefix Namespace prefix for node to create - * @param $name Name of not element to create - * @param $content Optional content to be set - * - * @return fDOMElement Reference to created fDOMElement - */ - public function createElementPrefix($prefix, $name, $content = null) { - if (!isset($this->prefixes[$prefix])) { - throw new fDOMException("'$prefix' not bound", fDOMException::UnboundPrefix); - } - $node = $this->createElementNS($this->prefixes[$prefix], $prefix.':'.$name); - if (!is_null($content)) { - $node->nodeValue = $content; - } - return $node; - } - - /** - * Check if the given node is in the same document - * - * @param \DOMNode $node Node to compare with - * - * @return boolean true on match, false if they differ - * - */ - public function inSameDocument(\DOMNode $node) { - if ($node instanceof \DOMDocument) { - return $this->isSameNode($node); - } - return $this->isSameNode($node->ownerDocument); - } - - } // fDOMDocument - -} diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocumentFragment.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocumentFragment.php deleted file mode 100644 index 009784c..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMDocumentFragment.php +++ /dev/null @@ -1,83 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/theseer/fdomdocument - * - */ - -namespace TheSeer\fDOM { - - /** - * fDOMDocumentFragment - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @access public - * - */ - class fDOMDocumentFragment extends \DOMDocumentFragment { - - /** - * Wrapper to standard method with exception support - * - * @param string $str Data string to parse and append - * - * @return boolean true on success - */ - public function appendXML($str) { - if (!parent::appendXML($str)) { - throw new fDOMException('Appending xml string failed', fDOMException::ParseError); - } - return true; - } - - /** - * Check if the given node is in the same document - * - * @param \DOMNode $node Node to compare with - * - * @return boolean true on match, false if they differ - * - */ - public function inSameDocument(\DOMNode $node) { - return $this->ownerDocument->inSameDocument($node); - } - - } // fDOMDocumentFragment - -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMElement.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMElement.php deleted file mode 100644 index 66f7e7e..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMElement.php +++ /dev/null @@ -1,291 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/theseer/fdomdocument - * - */ - -namespace TheSeer\fDOM { - - /** - * fDomElement - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @access public - * - */ - class fDOMElement extends \DOMElement { - - /** - * Forward to fDomDocument->query() - * - * @param string $q XPath to use - * @param \DOMNode $ctx \DOMNode to overwrite context - * @param boolean $registerNodeNS Register flag pass thru - * - * @return DomNodeList - */ - public function query($q, \DOMNode $ctx = null, $registerNodeNS = true) { - return $this->ownerDocument->query($q, $ctx ? $ctx : $this, $registerNodeNS); - } - - /** - * Forward to fDomDocument->queryOne() - * - * @param string $q XPath to use - * @param \DOMNode $ctx (optional) \DOMNode to overwrite context - * @param boolean $registerNodeNS Register flag pass thru - * - * @return mixed - */ - public function queryOne($q, \DOMNode $ctx = null, $registerNodeNS = true) { - return $this->ownerDocument->queryOne($q, $ctx ? $ctx : $this, $registerNodeNS); - } - - /** - * Parse and append XML String to node - * - * @param String $str string to process - * - * @return fDomDocumentFragment Reference to the created Fragment - */ - public function appendXML($str) { - $frag = $this->ownerDocument->createDocumentFragment(); - $frag->appendXML($str); - $this->appendChild($frag); - return $frag; - } - - /** - * Create a new element and append it - * - * @param $name Name of not element to create - * @param $content Optional content to be set - * - * @return fDOMElement Reference to created fDOMElement - */ - public function appendElement($name, $content = null) { - $node = $this->ownerDocument->createElement($name); - $this->appendChild($node); - if (!is_null($content)) { - $node->nodeValue = $content; - } - return $node; - } - - /** - * Create a new element in given namespace and append it - * - * @param $ns Namespace of node to create - * @param $name Name of not element to create - * @param $content Optional content to be set - * - * @return fDOMElement Reference to created fDOMElement - */ - public function appendElementNS($ns, $name, $content = null) { - $node = $this->ownerDocument->createElementNS($ns, $name); - $this->appendChild($node); - if (!is_null($content)) { - $node->nodeValue = $content; - } - return $node; - } - - /** - * Create a new element in given namespace and append it - * - * @param $prefix Namespace prefix for node to create - * @param $name Name of not element to create - * @param $content Optional content to be set - * - * @return fDOMElement Reference to created fDOMElement - */ - public function appendElementPrefix($prefix, $name, $content = null) { - $node = $this->ownerDocument->createElementPrefix($prefix, $name, $content); - $this->appendChild($node); - return $node; - } - - /** - * Wrapper to DomElement->getAttribute with default value option - * - * Note: A set but emptry attribute does NOT trigger use of the default - * - * @param string $attr Attribute to access - * @param string $default Default value to use if the attribute is not set - * - * @return string - */ - public function getAttribute($attr, $default='') { - return $this->hasAttribute($attr) ? parent::getAttribute($attr) : $default; - } - - /** - * Wrapper to DomElement->getAttributeNS with default value option - * - * Note: A set but empty attribute does NOT trigger use of the default - * - * @param string $ns Namespace of attribute - * @param string $attr Attribute to access - * @param string $default Default value to use if the attribute is not set - * - * @return string - */ - public function getAttributeNS($ns, $attr, $default='') { - return $this->hasAttributeNS($ns, $attr) ? parent::getAttributeNS($ns, $attr) : $default; - } - - /** - * Wrapper to DOMElement::setAttribute with additional entities support - * - * @param string $attr Attribute name to set - * @param string $value Value to set attribute to - * @param boolean $keepEntitites Flag to signale if entities should be kept - * - * @return fDOMAttr - * - * @see DOMElement::setAttribute() - */ - public function setAttribute($attr, $value, $keepEntities=false) { - if ($keepEntities === true) { - $attrNode = $this->ownerDocument->createAttribute($attr); - if (!$attrNode) { - throw new fDOMException("Setting attribute '$attr' failed.", fDOMException::SetFailedError); - } - $attrNode->value = $value; - $this->appendChild($attrNode); - return $attrNode; - } - return parent::setAttribute($attr, $value); - } - - /** - * Wrapper to namespace aware DOMElement::setAttributeNS with additional entities support - * - * @param string $ns namespace attribute should be in - * @param string $attr Attribute name to set - * @param string $value Value to set attribute to - * @param boolean $keepEntitites Flag to signale if entities should be kept - * - * @return fDOMAttr - * - * @see DOMElement::setAttribute() - */ - public function setAttributeNS($ns, $attr, $value, $keepEntities=false) { - if ($keepEntities === true) { - $attrNode = $this->ownerDocument->createAttributeNS($ns, $attr); - if (!$attrNode) { - throw new fDOMException("Setting attribute '$attr' failed.", fDOMException::SetFailedError); - } - $attrNode->value = $value; - $this->appendChild($attrNode); - return $attrNode; - } - return parent::setAttributeNS($ns, $attr, $value); - } - - /** - * Helper to add multiple attributes to an element - * - * @param array $attr Attributes to add - * - * @return array List with references to created DOMAttr - */ - public function setAttributes(array $attr, $keepEntities=false) { - $attList = array(); - foreach($attr as $name => $value) { - $attList[] = $this->setAttribute($name, $value, $keepEntities); - } - - return $attList; - } - - /** - * Helper to add multiple attributes with the given namespace and prefix - * - * @param string $ns Namespace of attribute - * @param string $prefix Namespace prefix for attribute to create - * @param array $attr Attributes to add - * - * @return void - */ - public function setAttributesNS($ns, $prefix, array $attr, $keepEntities=false) { - foreach($attr as $name => $value) { - $this->setAttributeNS($ns, $prefix.':'.$name, $value, $keepEntities); - } - } - - /** - * Helper method to get children by name - * - * @param string $tagName tagname to search for - * - * @return DomNodeList - */ - public function getChildrenByTagName($tagName) { - return $this->query("*[local-name()='$tagName']"); - } - - /** - * Helper method to get children by name and namespace - * - * @param string $ns namespace nodes have to be in - * @param string $tagName tagname to search for - * - * @return DomNodeList - */ - public function getChildrenByTagNameNS($ns, $tagName) { - return $this->query("*[local-name()='$tagName' and namespace-uri()='$ns']"); - } - - /** - * Check if the given node is in the same document - * - * @param DomNode $node Node to compare with - * - * @return boolean true on match, false if they differ - * - */ - public function inSameDocument(\DomNode $node) { - return $this->ownerDocument->inSameDocument($node); - } - - } // fDOMElement - -} diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMException.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMException.php deleted file mode 100644 index 2408cdc..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMException.php +++ /dev/null @@ -1,175 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license BSD License - */ - -namespace TheSeer\fDOM { - - /** - * fDOMException - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @access public - * - */ - class fDOMException extends \Exception { - - const LoadError = 1; - const ParseError = 2; - const SaveError = 3; - const QueryError = 4; - const RegistrationFailed = 5; - const NoDOMXPath = 6; - const UnboundPrefix = 7; - const SetFailedError = 8; - - /** - * List of libxml error objects - * - * @var array - */ - private $errorList; - - /** - * Flag wheter getMessage() should return full (e.g. with details) message or only exception message - * - * @var boolean - */ - private $fullFlag = false; - - /** - * Full Error message - * - * @var string - */ - private $fullMessage = null; - - - /** - * Short Error Message - * - * @var string - */ - private $shortMessage = null; - - /** - * Constructor - * - * @param string $message Exception message - * @param integer $code Exception code - * - * @return void - */ - public function __construct($message, $code = 0, $chain = NULL) { - $this->shortMessage = $message; - $this->errorList = libxml_get_errors(); - libxml_clear_errors(); - parent :: __construct($message, $code, $chain); - - $this->fullMessage = $message."\n\n"; - - foreach ($this->errorList as $error) { - // hack, skip "attempt to load external pseudo error" - if ($error->code=='1543') { - continue; - } - - if (empty($error->file)) { - $this->fullMessage .= '[XML-STRING] '; - } else { - $this->fullMessage .= '['.$error->file.'] '; - } - - $this->fullMessage .= '[Line: '.$error->line.' - Column: '.$error->column.'] '; - - switch ($error->level) { - case LIBXML_ERR_WARNING: - $this->fullMessage .= "Warning $error->code: "; - break; - case LIBXML_ERR_ERROR: - $this->fullMessage .= "Error $error->code: "; - break; - case LIBXML_ERR_FATAL: - $this->fullMessage .= "Fatal Error $error->code: "; - break; - } - - $this->fullMessage .= str_replace("\n", '', $error->message)."\n"; - } - } - - /** - * Accessor to fullMessage - * - * @return string - */ - public function getFullMessage() { - return $this->fullMessage; - } - - /** - * Accessor to errorList objets - * - * @return array - */ - public function getErrorList() { - return $this->errorList; - } - - /** - * Toggle wehter getMessage() should return full or only excepotion message - * - * @param boolean $full Flag to enable or disable full message output - * - * @return void - */ - public function toggleFullMessage($full = true) { - $this->message = $full ? $this->fullMessage : $this->shortMessage; - } - - /** - * Magic method for string context - * - * @return string - */ - public function __toString() { - return $this->fullMessage; - } - - } // fDOMException - -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter.php deleted file mode 100644 index d02fa21..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter.php +++ /dev/null @@ -1,342 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/theseer/fDOMdocument - * - */ - -namespace TheSeer\fDOM { - - /** - * fDOMFilter interface - * - * @category Core - * @package Core - * @access public - * @author Arne Blankerts - * - */ - interface fDOMFilter { - - /** - * xml namespace this filter is for - * - * @return string Namespace URI - */ - public function getNamespace(); - - /** - * Factory Helper to get Instance for given tagname - * - * @param string $tagname Tagname - * - * @return fDOMFilter Instance of a class implementing fDOMFilter - */ - public function getInstanceForTagName($tagname); - - /** - * Factory Helper to get Instance for attribute handler for current tag - * - * @return fDOMFilter Instance of a class implementing fDOMFilter - */ - public function getInstanceForAttributes(); - - } - - // =============================================================================================================== - - /** - * fDOMFilterProcessor class - * - * @category Core - * @package Core - * @access public - * @author Arne Blankerts - * - */ - class fDOMFilterProcessor { - - private $dom; - private $filterList = array(); - - /** - * Constructor - * - * @param fDOMDocument $fDOM Reference to fDOMDocument this processor will work on - * - * @return void - */ - public function __construct(fDOMDocument $fDOM) { - $this->dom = $fDOM; - } - - /** - * Add Filter Implementation to list - * - * @param fDOMFilter $filter Instance of an fDOMFilter class - * - * @return void - */ - public function addFilter(fDOMFilter $filter) { - $this->filterList[$filter->getNamespace()] = $filter; - } - - /** - * Enter description here... - * - * @param DOMNode $node (optional) DomNode reference to begin cleaning at - * - * @return boolean true on success, false if cleaning failed - */ - public function cleanup(DOMNode $node=null) { - if (empty($this->filterList)) { - throw new fDOMException('No filter defined for cleanup', fException::ERROR); - } - return $this->cleanupNode(is_null($node) ? $this->dom->documentElement : $node); - } - - - /** - * Clean Processor call - * - * @param DOMNode $node DomNode to process - * - * @return boolean - */ - private function cleanupNode(DOMNode $node) { - - if ($node->nodeType == XML_COMMENT_NODE ) { - return false; - } - - // get ns from node - $xmlns = $node->namespaceURI; - if (is_null($xmlns)) { - $xmlns = 'none'; - } - - // filter class for namespace? - if (isset($this->filterList[$xmlns])) { - $filterCore = $this->filterList[$xmlns]; - $filter = $filterCore->getInstanceForTagName($node->localName); - - if ($node->hasAttributes()) { - $this->processAttributes($node, $filter); - } - - if ($node->hasChildNodes()) { - $this->processChildNodes($node, $filter); - } - - return true; - - } else { - - // no filter class for this xmlns, remove node if possible - if ($node->parentNode instanceof DOMNode) { - $node->parentNode->removeChild($node); - return true; - } else { - // cannot remove this node here, thus return false - return false; - } - } - } // cleanupNode - - /** - * Helper to loop over attributes - * - * @param fDOMNode $node Domnode to process attributes of - * @param fDOMFilter $filter Instance of filter - * - * @return void - */ - private function processAttributes(fDOMNode $node, fDOMFilter $filter) { - // loop attributes - foreach($node->attributes as $attr) { - - if ($attr->namespaceURI!='' && $attr->namespaceURI!=$node->namespaceURI) { - - // ignore xml attributes - if ($attr->namespaceURI=='http://www.w3.org/XML/1998/namespace') { - continue; - } - - // custom namespace handling needed - $custom = $this->filterList[$xmlns]->getInstanceForAttributes(); - - if (!$custom || !in_array($attr->name, $custom->attributes)) { - $node->removeAttributeNode($attr); - continue; - } - - // custom function defined? If so, use - if (method_exists($custom, 'attribute_'.$attr->name)) { - $node->setAttribute($attr->name, $custom->{'attribute_'.$attr->name}($attr->value)); - } - - } else { - // same namespace as node - - if (!in_array($attr->name, $filter->attributes)) { - $node->removeAttributeNode($attr); - continue; - } - - // filter function defined? If so, use - if (method_exists($filter, 'attribute_'.$attr->name)) { - $node->setAttribute($attr->name, $filter->{'attribute_'.$attr->name}($attr->value)); - } - } - - } // attributes - } - - /** - * Helper to loop over childnodes of given node - * - * @param fDOMNode $node Node to process children of - * @param fDOMFilter $filter Instance of current fDOMFilter - * - * @return void - */ - private function processChildNodes(fDOMNode $node, fDOMFilter $filter) { - - // remove childnodes if empty is enforced - if ($filter->isEmpty) { - foreach($node->childNodes as $c) { - $node->removeChild($c); - } - return; - } - - // loop children - foreach($node->childNodes as $child) { - - if ($child instanceof DOMText) { - if (!$filter->textContent && !$child->isWhitespaceInElementContent() ) { - $node->removeChild($child); - } - continue; - } - - // remove comments and PIs ;) - if ($child->nodeType == XML_COMMENT_NODE || $child->nodeType == XML_PI_NODE) { - $node->removeChild($child); - continue; - } - - // still same xmlns and child is a DOMNode - if ($child instanceof DOMNode && $child->namespaceURI==$xmlns) { - - // node not allowed? -> remove - if (!in_array($child->localName, $filter->children)) { - $node->removeChild($child); - continue; - } - - } - - // process child itself - recurse on $child - $rc = $this->cleanupNode($child); - if (!$rc) { - $node->removeChild($child); - } - - } - - } - } - - // =============================================================================================================== - - /** - * fDOMFilterNode class - * - * This class provides some general helper functions for actual filter classes - * - * @category Core - * @package Core - * @access public - * @author Arne Blankerts - * - */ - abstract class fDOMFilterNode { - - public $attributes = array(); - public $children = array(); - public $textContent = false; - public $isEmpty = false; - - /** - * regex validator helper - * - * @param string $pattern regular expression to use - * @param string $value value to use regex on - * @param string $fallback default value in case regex failed - * - * @return string - */ - public function validateRegex($pattern, $value, $fallback) { - return preg_match($pattern, $value) ? $value : $fallback; - } - - /** - * only http/https or local uri allowed - * - * @param string $val URI String - * - * @return string Original URI if it was valid, otherwise empty string - */ - public function uriValidator($val) { - return preg_match('=^((http|https):.*|[^:]*)$=', $val) ? $val : ''; - } - - /** - * textContent validator - * - * This is a stub function - * - * @return boolean true - */ - public function validateContent() { - return true; - } - - } - -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter/xhtml.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter/xhtml.php deleted file mode 100644 index 7344bca..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMFilter/xhtml.php +++ /dev/null @@ -1,1201 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license BSD License - */ - -namespace TheSeer\fDOM { - - /** - * fDOMFilterXHTML - * - * - * Filter a given xhtml dom document for security based on - * - whitelist, based on xhtml 1.0 tans dtd with the following removed - * - script, style, frame/iframe, font - * - on*-Events - * - meta, link, base - * - applet, object (embed is not xhtml compliant) - * - * - removal of nonn matching tags/attributes and their respective children - * - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @access public - * - */ - class fDOMFilterXHTML implements fDOMFilter { - - public function getNamespace() { - return 'http://www.w3.org/1999/xhtml'; - } - - // ***** Attriubtes - - // - static $coreattrs = array('id','class','title'); - - // - static $i18n = array('lang','xml:lang','dir'); - - // - static $focus = array('accesskey','tabindex'); - - // group of attributes - static $attrs = array(); - - - // ***** Elements - - // - // - // - static $fontstyle = array('big','small','tt','b','i','u','s','strike'); - - // - // - // - static $special = array('img','map','br','span','bdo'); - - // - // - // - static $phrase = array('sub','sup','em','strong','dfn','code','q','samp','kdb','var','cite','abbr','acronym'); - - // - static $heading = array('h1','h2','h3','h4','h5','h6'); - - // - static $lists = array('ul','ol','dl','menu','dir'); - - // - static $blocktext = array('pre','hr','blockquote','address','center','noframes'); - - // - static $form = array('input','select', 'textarea', 'label','button'); - - // - // - static $misc = array('noscript','ins','del'); - - // Groups of elements - static $inline; - static $block; - static $flow; - - // private variables - private $matrix = array(); - - public function __construct() { - - // - self::$attrs = array_merge(self::$coreattrs, self::$i18n); - - // - self::$inline = array_merge( array('a'), self::$special, self::$fontstyle, self::$phrase ); - - // - self::$block = array_merge( self::$heading, self::$lists, self::$blocktext, - array('p','div','fieldset','table' ) ); - - // - self::$flow = array_merge( self::$block, self::$inline, self::$misc, array('form')); - } - - public function getInstanceForTagName($tagname) { - - $classname = 'fDOMFilterXHTML_'.$tagname; - if (!class_exists($classname)) { - return false; - } - - if (!isset($this->matrix[$tagname])) { - $this->matrix[$tagname] = new $classname; - } - - return $this->matrix[$tagname]; - - } - - public function getInstanceForAttributes() { - // there are no "standalone attributes" - return false; - } - - - } // fFilterXHTML - - - /* - * XHTML Node Classes - */ - - // - // - class fDOMFilterXHTML_html extends fDOMFilterNode { - - public $children = array('head','body'); - - public function __construct() { - $this->attributes = array_merge( fDOMFilterXHTML::$i18n, array('id','xmlns')); - } - } - - // - // - // - class fDOMFilterXHTML_head extends fDOMFilterNode { - - public $children = array('title'); - - public function __construct() { - $this->attributes = array_merge( fDOMFilterXHTML::$i18n, array('id','profile')); - } - } - - // - // - class fDOMFilterXHTML_title extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->attributes = array_merge( fDOMFilterXHTML::$i18n, array('id')); - } - } - - // - // - class fDOMFilterXHTML_noscript extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->attributes = fDOMFilterXHTML::$attrs; - $this->children = fDOMFilterXHTML::$flow; - } - } - - // - // - class fDOMFilterXHTML_body extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, - array('bgcolor','text','link','vlink','alink')); - $this->children = fDOMFilterXHTML::$flow; - } - } - - // - // - class fDOMFilterXHTML_div extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('align')); - $this->children = fDOMFilterXHTML::$flow; - } - - public function attr_align($value) { - return in_array($value, array('left', 'center', 'right', 'justify')) ? $value : 'left'; - } - } - - // - // - class fDOMFilterXHTML_p extends fDOMFilterXHTML_div { - - public $textContent = true; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('align')); - $this->children = fDOMFilterXHTML::$inline; - } - } - - // - // - class fDOMFilterXHTML_h1 extends fDOMFilterXHTML_p {} - - // - // - class fDOMFilterXHTML_h2 extends fDOMFilterXHTML_p {} - - // - // - class fDOMFilterXHTML_h3 extends fDOMFilterXHTML_p {} - - // - // - class fDOMFilterXHTML_h4 extends fDOMFilterXHTML_p {} - - // - // - class fDOMFilterXHTML_h5 extends fDOMFilterXHTML_p {} - - // - // - class fDOMFilterXHTML_h6 extends fDOMFilterXHTML_p {} - - // - // - class fDOMFilterXHTML_ul extends fDOMFilterNode { - - public $children = array('li'); - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('type', 'compact')); - } - - public function attr_type($value) { - // - return in_array($value, array('disc', 'square', 'circle')) ? $value : 'disc'; - } - - public function attr_compact($value) { - return 'compact'; - } - } - - // - // - // - class fDOMFilterXHTML_ol extends fDOMFilterNode { - - public $children = array('li'); - public $attributes; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('type','compact','start')); - } - - public function attr_compact($value) { - return 'compact'; - } - - public function attr_start($value) { - return (string)(int)$value; - } - } - - // - // - class fDOMFilterXHTML_menu extends fDOMFilterNode { - - public $children = array('li'); - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('type','compact')); - } - - public function attr_compact($value) { - return 'compact'; - } - - } - - // - // - class fDOMFilterXHTML_dir extends fDOMFilterXHTML_menu {}; - - // - // - class fDOMFilterXHTML_li extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = fDOMFilterXHTML::$flow; - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('type','value')); - } - } - - // - // - class fDOMFilterXHTML_dl extends fDOMFilterNode { - - public $children = array('dt','dd'); - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('compat')); - } - - public function attr_compact($value) { - return 'compact'; - } - } - - // - // - class fDOMFilterXHTML_dt extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = fDOMFilterXHTML::$inline; - $this->attributes = fDOMFilterXHTML::$attrs; - } - } - - // - // - class fDOMFilterXHTML_dd extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = fDOMFilterXHTML::$flow; - $this->attributes = fDOMFilterXHTML::$attrs; - } - } - - // - // - // - class fDOMFilterXHTML_address extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = array_merge( fDOMFilterXHTML::$inline, array('ins','del','strike','p')); - $this->attributes = fDOMFilterXHTML::$attrs; - } - } - - // - // - class fDOMFilterXHTML_hr extends fDOMFilterNode { - - public $isEmpty = true; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('align','noshade','size','width')); - } - - public function attr_noshade($value) { - return 'noshade'; - } - } - - // - // - // - class fDOMFilterXHTML_pre extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = fDOMFilterXHTML::$inline; - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('xml:space','width')); - - // pre uses %Inline excluding img, big, small, font, or basefont - foreach( array('img', 'big', 'small', 'font', 'basefont') as $x) { - unset($this->children[array_search($x, $this->children)]); - } - } - } - - // - // - class fDOMFilterXHTML_blockquote extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = fDOMFilterXHTML::$flow; - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('cite')); - } - } - - // - // - class fDOMFilterXHTML_center extends fDOMFilterXHTML_dd {} - - // - // - class fDOMFilterXHTML_ins extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = fDOMFilterXHTML::$flow; - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('cite','datetime')); - } - } - - // - // - class fDOMFilterXHTML_del extends fDOMFilterXHTML_ins {} - - // - // - class fDOMFilterXHTML_a extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - - // $a.content == %inline, without 'a' - $this->children = fDOMFilterXHTML::$inline; - unset($this->children[array_search('a', $this->children)]); - - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, fDOMFilterXHTML::$focus, - array('charset','type','name','href','hreflang','rel','rev', - 'shape','coords','target')); - } - } - - // - // - class fDOMFilterXHTML_span extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_bdo extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - $this->children = fDOMFilterXHTML::$inline; - $this->attributes = array_merge(fDOMFilterXHTML::$coreattrs, array('lang','xml:lang','dir')); - } - - public function attribute_dir($value) { - return in_array($value, array('ltr','rtl')) ? $value : 'ltr'; - } - } - - // - // - // - class fDOMFilterXHTML_br extends fDOMFilterNode { - public $isEmpty = true; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$coreattrs, array('clear')); - } - - public function attribute_clear($value) { - return in_array($value, array('left', 'all', 'right' ,'none')) ? $value : 'none'; - } - } - - // - // - class fDOMFilterXHTML_em extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_strong extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_dfn extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_code extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_samp extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_kbd extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_var extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_cite extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_abbr extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_acronym extends fDOMFilterXHTML_dt {} - - // - // - - // - // - class fDOMFilterXHTML_sub extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_sup extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_tt extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_i extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_b extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_big extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_small extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_u extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_s extends fDOMFilterXHTML_dt {} - - // - // - class fDOMFilterXHTML_strike extends fDOMFilterXHTML_dt {} - - // - // - // - // - // - - - // - // - // - // - // - // - class fDOMFilterXHTML_img extends fDOMFilterNode { - public $isEmpty = true; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, - array('src','alt','name','longdesc','height','width', - 'usemap','ismap','align','border','hspace','vspace')); - } - - public function attribute_src($value) { - return $this->uriValidator($value); - } - - } - - // - // - class fDOMFilterXHTML_map extends fDOMFilterNode { - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$i18n, array('id','class','title','name')); - $this->chldren = array_merge(fDOMFilterXHTML::$block, fDOMFilterXHTML::$misc, - array('form','area')); - } - } - - // - // - class fDOMFilterXHTML_area extends fDOMFilterNode { - public $isEmpty = true; - - public function __construct() { - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, fDOMFilterXHTML::$focus, - array('shape','coords','href','nohref','alt','target')); - } - } - - // - // - class fDOMFilterXHTML_form extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - - // $form.content == %inline, without 'form' - $this->children = fDOMFilterXHTML::$inline; - unset($this->children[array_search('a', $this->children)]); - - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, - array('action','method','name','enctype','accept','accpet-charset','target')); - } - } - - // - // - class fDOMFilterXHTML_label extends fDOMFilterNode { - - public $textContent = true; - - public function __construct() { - - // $form.content == %inline, without 'form' - $this->children = fDOMFilterXHTML::$inline; - - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, array('for','accesskey')); - } - } - - // - // - class fDOMFilterXHTML_input extends fDOMFilterNode { - - public $isEmpty = true; - - public function __construct() { - - $this->attributes = array_merge(fDOMFilterXHTML::$attrs, fDOMFilterXHTML::$focus, - array('type','name','checked','disabled','readonly','size','maxlength', - 'src','alt','usemap','accept','align')); - } - - // - public function attribute_type($value) { - return in_array($value, array('text','password','checkbox','radio','submit','reset','file','hidden','image','button'))?$value:'text'; - } - - public function attribute_src($value) { - return $this->uriValidator($value); - } - - } - - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMNode.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMNode.php deleted file mode 100644 index 27d7e9a..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMNode.php +++ /dev/null @@ -1,69 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/theseer/fdomdocument - * - */ - -namespace TheSeer\fDOM { - - /** - * fDomNode - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @access public - * - */ - class fDOMNode extends \DOMNode { - - /** - * Check if the given node is in the same document - * - * @param \DomNode $node Node to compare with - * - * @return boolean true on match, false if they differ - * - */ - public function inSameDocument(\DOMNode $node) { - return $this->ownerDocument->inSameDocument($node); - } - - } // fDOMNode - -} diff --git a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMXPath.php b/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMXPath.php deleted file mode 100644 index 6b14ce3..0000000 --- a/vendor/eher/phpunit/src/fdomdocument/TheSeer/fDOMDocument/src/fDOMXPath.php +++ /dev/null @@ -1,115 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name of Arne Blankerts nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @copyright Arne Blankerts , All rights reserved. - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/theseer/fdomdocument - * - */ - -namespace TheSeer\fDOM { - - /** - * fDOMXPath extension to PHP's DOMXPath. - * - * @category PHP - * @package TheSeer\fDOM - * @author Arne Blankerts - * @access public - * - */ - class fDOMXPath extends \DOMXPath { - - protected $doc; - - public function __construct(\DOMDocument $doc) { - parent::__construct($doc); - $this->doc = $doc; - } - - public function prepare($xpath, array $valueMap) { - if (count($valueMap)==0) { - return $xpath; - } - foreach($valueMap as $key => $value) { - $xpath = str_replace(':'.$key, $this->quote($value), $xpath); - } - return $xpath; - } - - public function query($q, \DOMNode $ctx = null, $registerNodeNS = true) { - libxml_clear_errors(); - if (version_compare(PHP_VERSION, '5.3.3', '<')) { - $rc = parent::query($q, ($ctx instanceof \DOMNode) ? $ctx : $this->doc->documentElement); - } else { - $rc = parent::query($q, ($ctx instanceof \DOMNode) ? $ctx : $this->doc->documentElement, $registerNodeNS); - } - - if (libxml_get_last_error()) { - throw new fDOMException('evaluating xpath expression failed.', fDOMException::QueryError); - } - return $rc; - } - - public function evaluate($q, \DOMNode $ctx = null, $registerNodeNS = true) { - libxml_clear_errors(); - if (version_compare(PHP_VERSION, '5.3.3', '<')) { - $rc = parent::evaluate($q, ($ctx instanceof \DOMNode) ? $ctx : $this->doc->documentElement); - } else { - $rc = parent::evaluate($q, ($ctx instanceof \DOMNode) ? $ctx : $this->doc->documentElement, $registerNodeNS); - } - if (libxml_get_last_error()) { - throw new fDOMException('evaluating xpath expression failed.', fDOMException::QueryError); - } - return $rc; - } - - public function queryOne($q, \DOMNode $ctx = null, $registerNodeNS = true) { - $rc = $this->evaluate($q, $ctx, $registerNodeNS); - if ($rc instanceof \DOMNodelist) { - return $rc->item(0); - } - return $rc; - } - - public function quote($str) { - if (strpos($str, '"') === false) { - return '"'.$str.'"'; - } - $parts = explode('"', $str); - return 'concat("' . join('",\'"\',"', $parts).'")'; - } - } -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/Configuration.php b/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/Configuration.php deleted file mode 100644 index 90e86df..0000000 --- a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/Configuration.php +++ /dev/null @@ -1,140 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package FinderFacade - * @author Sebastian Bergmann - * @copyright 2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -namespace SebastianBergmann\FinderFacade -{ - use TheSeer\fDOM\fDOMDocument; - - /** - * - * - * - * /path/to/directory - * /path/to/file - * - * /path/to/directory - * *.php - * - * - * - * @author Sebastian Bergmann - * @copyright 2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.0.1 - * @link http://github.com/sebastianbergmann/finder-facade/tree - * @since Class available since Release 1.0.0 - */ - class Configuration - { - /** - * @var string - */ - protected $basePath; - - /** - * @var fDOMDocument - */ - protected $xml; - - /** - * @param string $file - */ - public function __construct($file) - { - $this->basePath = dirname($file); - - $this->xml = new fDOMDocument; - $this->xml->load($file); - } - - /** - * @param string $xpath - * @return array - */ - public function parse($xpath = '') - { - $result = array( - 'items' => array(), 'excludes' => array(), 'names' => array() - ); - - foreach ($this->xml->getDOMXPath()->query($xpath . 'include/directory') as $item) { - $result['items'][] = $this->toAbsolutePath($item->nodeValue); - } - - foreach ($this->xml->getDOMXPath()->query($xpath . 'include/file') as $item) { - $result['items'][] = $this->toAbsolutePath($item->nodeValue); - } - - foreach ($this->xml->getDOMXPath()->query($xpath . 'exclude') as $exclude) { - $result['excludes'][] = $exclude->nodeValue; - } - - foreach ($this->xml->getDOMXPath()->query($xpath . 'name') as $name) { - $result['names'][] = $name->nodeValue; - } - - return $result; - } - - /** - * @param string $path - * @return string - */ - protected function toAbsolutePath($path) - { - // Check whether the path is already absolute. - if ($path[0] === '/' || $path[0] === '\\' || - (strlen($path) > 3 && ctype_alpha($path[0]) && - $path[1] === ':' && ($path[2] === '\\' || $path[2] === '/'))) { - return $path; - } - - // Check whether a stream is used. - if (strpos($path, '://') !== FALSE) { - return $path; - } - - return $this->basePath . DIRECTORY_SEPARATOR . $path; - } - } -} diff --git a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/FinderFacade.php b/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/FinderFacade.php deleted file mode 100644 index 0da000e..0000000 --- a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/FinderFacade.php +++ /dev/null @@ -1,137 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package FinderFacade - * @author Sebastian Bergmann - * @copyright 2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -namespace SebastianBergmann\FinderFacade -{ - use Symfony\Component\Finder\Finder; - - /** - * Convenience wrapper for Symfony's Finder component. - * - * @author Sebastian Bergmann - * @copyright 2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.0.1 - * @link http://github.com/sebastianbergmann/finder-facade/tree - * @since Class available since Release 1.0.0 - */ - class FinderFacade - { - /** - * @var array - */ - protected $items = array(); - - /** - * @var array - */ - protected $excludes = array(); - - /** - * @var array - */ - protected $names = array(); - - /** - * @param array $items - * @param array $excludes - * @param array $names - */ - public function __construct(array $items = array(), array $excludes = array(), array $names = array()) - { - $this->items = $items; - $this->excludes = $excludes; - $this->names = $names; - } - - /** - * @return array - */ - public function findFiles() - { - $files = array(); - $finder = new Finder; - $iterate = FALSE; - - foreach ($this->items as $item) { - if (!is_file($item)) { - $finder->in($item); - $iterate = TRUE; - } - - else { - $files[] = realpath($item); - } - } - - foreach ($this->excludes as $exclude) { - $finder->exclude($exclude); - } - - foreach ($this->names as $name) { - $finder->name($name); - } - - if ($iterate) { - foreach ($finder as $file) { - $files[] = $file->getRealpath(); - } - } - - return $files; - } - - /** - * @param string $file - */ - public function loadConfiguration($file) - { - $configuration = new Configuration($file); - $configuration = $configuration->parse(); - - $this->items = $configuration['items']; - $this->excludes = $configuration['excludes']; - $this->names = $configuration['names']; - } - } -} diff --git a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php b/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php deleted file mode 100644 index ba5afe2..0000000 --- a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php +++ /dev/null @@ -1,73 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package FinderFacade - * @author Sebastian Bergmann - * @copyright 2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -require_once 'Symfony/Component/Finder/Finder.php'; -require_once 'Symfony/Component/Finder/Glob.php'; -require_once 'Symfony/Component/Finder/Iterator/FileTypeFilterIterator.php'; -require_once 'Symfony/Component/Finder/Iterator/FilenameFilterIterator.php'; -require_once 'Symfony/Component/Finder/Iterator/RecursiveDirectoryIterator.php'; -require_once 'Symfony/Component/Finder/Iterator/ExcludeDirectoryFilterIterator.php'; -require_once 'Symfony/Component/Finder/SplFileInfo.php'; -require_once 'TheSeer/fDOMDocument/autoload.php'; - -// @codingStandardsIgnoreFile -// @codeCoverageIgnoreStart -spl_autoload_register( - function($class) { - static $classes = NULL; - - if ($classes === NULL) { - $classes = array( - 'sebastianbergmann\\finderfacade\\configuration' => '/Configuration.php', - 'sebastianbergmann\\finderfacade\\finderfacade' => '/FinderFacade.php' - ); - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require __DIR__ . $classes[$cn]; - } - } -); -// @codeCoverageIgnoreEnd diff --git a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php.in b/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php.in deleted file mode 100644 index 30f4224..0000000 --- a/vendor/eher/phpunit/src/finder-facade-fix/SebastianBergmann/FinderFacade/autoload.php.in +++ /dev/null @@ -1,72 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package FinderFacade - * @author Sebastian Bergmann - * @copyright 2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -require_once 'Symfony/Component/Finder/Finder.php'; -require_once 'Symfony/Component/Finder/Glob.php'; -require_once 'Symfony/Component/Finder/Iterator/FileTypeFilterIterator.php'; -require_once 'Symfony/Component/Finder/Iterator/FilenameFilterIterator.php'; -require_once 'Symfony/Component/Finder/Iterator/RecursiveDirectoryIterator.php'; -require_once 'Symfony/Component/Finder/Iterator/ExcludeDirectoryFilterIterator.php'; -require_once 'Symfony/Component/Finder/SplFileInfo.php'; -require_once 'TheSeer/fDOMDocument/autoload.php'; - -// @codingStandardsIgnoreFile -// @codeCoverageIgnoreStart -spl_autoload_register( - function($class) { - static $classes = NULL; - - if ($classes === NULL) { - $classes = array( - ___CLASSLIST___ - ); - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require ___BASEDIR___$classes[$cn]; - } - } -); -// @codeCoverageIgnoreEnd diff --git a/vendor/eher/phpunit/src/php-code-coverage/.gitattributes b/vendor/eher/phpunit/src/php-code-coverage/.gitattributes deleted file mode 100644 index 461090b..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/eher/phpunit/src/php-code-coverage/.gitignore b/vendor/eher/phpunit/src/php-code-coverage/.gitignore deleted file mode 100644 index a741983..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -build/api -build/code-browser -build/coverage -build/logs -build/pdepend -cache.properties -phpunit.xml diff --git a/vendor/eher/phpunit/src/php-code-coverage/ChangeLog.markdown b/vendor/eher/phpunit/src/php-code-coverage/ChangeLog.markdown deleted file mode 100644 index 718808a..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/ChangeLog.markdown +++ /dev/null @@ -1,34 +0,0 @@ -PHP_CodeCoverage 1.1 -==================== - -This is the list of changes for the PHP_CodeCoverage 1.1 release series. - -PHP_CodeCoverage 1.1.3 ----------------------- - -* Fixed #94: Functions created using the runkit extension caused warnings. - -PHP_CodeCoverage 1.1.2 ----------------------- - -* Fixed #80: Whitelisted files that do not exist lead to errors. -* Fixed #91: Traits are not handled properly. -* Fixed notice in `PHP_CodeCoverage_Util::resolveCoversToReflectionObjects()`. -* The `callbable`, `implements`, and `insteadof` keywords are now properly highlighted in the HTML report. - -PHP_CodeCoverage 1.1.1 ----------------------- - -* Fixed #74: Removed extraneous spaces in displayed paths in the HTML code coverage report. -* Fixed #75: CRAP index missing from HTML code coverage report. - -PHP_CodeCoverage 1.1.0 ----------------------- - -* Added support for traits. -* Added an option to disable the caching of `PHP_Token_Stream` objects to reduce the memory usage. -* Refactored the collection and processing of code coverage data improving code readability and performance. -* Refactored the generation of Clover XML and HTML reports improving code readability and testability. -* Removed the support for multiple blacklist groups. -* Removed the `PHP_CodeCoverage::getInstance()` and `PHP_CodeCoverage_Filter::getInstance()` methods. -* Replaced [RGraph](http://www.rgraph.net/) with [Highcharts JS](http://www.highcharts.com/) as the JavaScript chart library used for the HTML report's code coverage dashboard. diff --git a/vendor/eher/phpunit/src/php-code-coverage/LICENSE b/vendor/eher/phpunit/src/php-code-coverage/LICENSE deleted file mode 100644 index 3d72de9..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -PHP_CodeCoverage - -Copyright (c) 2009-2012, Sebastian Bergmann . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage.php deleted file mode 100644 index 1d232f2..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage.php +++ /dev/null @@ -1,539 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Provides collection functionality for PHP code coverage information. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage -{ - /** - * @var PHP_CodeCoverage_Driver - */ - protected $driver; - - /** - * @var PHP_CodeCoverage_Filter - */ - protected $filter; - - /** - * @var boolean - */ - protected $cacheTokens = TRUE; - - /** - * @var boolean - */ - protected $forceCoversAnnotation = FALSE; - - /** - * @var boolean - */ - protected $mapTestClassNameToCoveredClassName = FALSE; - - /** - * @var boolean - */ - protected $processUncoveredFilesFromWhitelist = TRUE; - - /** - * @var mixed - */ - protected $currentId; - - /** - * Code coverage data. - * - * @var array - */ - protected $data = array(); - - /** - * Test data. - * - * @var array - */ - protected $tests = array(); - - /** - * Constructor. - * - * @param PHP_CodeCoverage_Driver $driver - * @param PHP_CodeCoverage_Filter $filter - * @throws InvalidArgumentException - */ - public function __construct(PHP_CodeCoverage_Driver $driver = NULL, PHP_CodeCoverage_Filter $filter = NULL) - { - if ($driver === NULL) { - $driver = new PHP_CodeCoverage_Driver_Xdebug; - } - - if ($filter === NULL) { - $filter = new PHP_CodeCoverage_Filter; - } - - $this->driver = $driver; - $this->filter = $filter; - } - - /** - * Returns the PHP_CodeCoverage_Report_Node_* object graph - * for this PHP_CodeCoverage object. - * - * @return PHP_CodeCoverage_Report_Node_Directory - * @since Method available since Release 1.1.0 - */ - public function getReport() - { - $factory = new PHP_CodeCoverage_Report_Factory; - - return $factory->create($this); - } - - /** - * Clears collected code coverage data. - */ - public function clear() - { - $this->currentId = NULL; - $this->data = array(); - $this->tests = array(); - } - - /** - * Returns the PHP_CodeCoverage_Filter used. - * - * @return PHP_CodeCoverage_Filter - */ - public function filter() - { - return $this->filter; - } - - /** - * Returns the collected code coverage data. - * - * @return array - * @since Method available since Release 1.1.0 - */ - public function getData() - { - if ($this->processUncoveredFilesFromWhitelist) { - $this->processUncoveredFilesFromWhitelist(); - } - - // We need to apply the blacklist filter a second time - // when no whitelist is used. - if (!$this->filter->hasWhitelist()) { - $this->applyListsFilter($this->data); - } - - return $this->data; - } - - /** - * Returns the test data. - * - * @return array - * @since Method available since Release 1.1.0 - */ - public function getTests() - { - return $this->tests; - } - - /** - * Start collection of code coverage information. - * - * @param mixed $id - * @param boolean $clear - * @throws InvalidArgumentException - */ - public function start($id, $clear = FALSE) - { - if (!is_bool($clear)) { - throw new InvalidArgumentException; - } - - if ($clear) { - $this->clear(); - } - - $this->currentId = $id; - - $this->driver->start(); - } - - /** - * Stop collection of code coverage information. - * - * @param boolean $append - * @return array - * @throws InvalidArgumentException - */ - public function stop($append = TRUE) - { - if (!is_bool($append)) { - throw new InvalidArgumentException; - } - - $data = $this->driver->stop(); - $this->append($data, NULL, $append); - - $this->currentId = NULL; - - return $data; - } - - /** - * Appends code coverage data. - * - * @param array $data - * @param mixed $id - * @param boolean $append - */ - public function append(array $data, $id = NULL, $append = TRUE) - { - if ($id === NULL) { - $id = $this->currentId; - } - - if ($id === NULL) { - throw new InvalidArgumentException; - } - - $this->applyListsFilter($data); - $this->initializeFilesThatAreSeenTheFirstTime($data); - - if (!$append) { - return; - } - - if ($id != 'UNCOVERED_FILES_FROM_WHITELIST') { - $this->applyCoversAnnotationFilter($data, $id); - } - - if (empty($data)) { - return; - } - - $status = NULL; - - if ($id instanceof PHPUnit_Framework_TestCase) { - $status = $id->getStatus(); - $id = get_class($id) . '::' . $id->getName(); - } - - else if ($id instanceof PHPUnit_Extensions_PhptTestCase) { - $id = $id->getName(); - } - - $this->tests[$id] = $status; - - foreach ($data as $file => $lines) { - if (!$this->filter->isFile($file)) { - continue; - } - - foreach ($lines as $k => $v) { - if ($v == 1) { - $this->data[$file][$k][] = $id; - } - } - } - } - - /** - * Merges the data from another instance of PHP_CodeCoverage. - * - * @param PHP_CodeCoverage $that - */ - public function merge(PHP_CodeCoverage $that) - { - foreach ($that->data as $file => $lines) { - if (!isset($this->data[$file])) { - if (!$this->filter->isFiltered($file)) { - $this->data[$file] = $lines; - } - - continue; - } - - foreach ($lines as $line => $data) { - if ($data !== NULL) { - if (!isset($this->data[$file][$line])) { - $this->data[$file][$line] = $data; - } else { - $this->data[$file][$line] = array_unique( - array_merge($this->data[$file][$line], $data) - ); - } - } - } - } - - $this->tests = array_merge($this->tests, $that->getTests()); - } - - /** - * @param boolean $flag - * @throws InvalidArgumentException - * @since Method available since Release 1.1.0 - */ - public function setCacheTokens($flag) - { - if (!is_bool($flag)) { - throw new InvalidArgumentException; - } - - $this->cacheTokens = $flag; - } - - /** - * @param boolean $flag - * @throws InvalidArgumentException - * @since Method available since Release 1.1.0 - */ - public function getCacheTokens() - { - return $this->cacheTokens; - } - - /** - * @param boolean $flag - * @throws InvalidArgumentException - */ - public function setForceCoversAnnotation($flag) - { - if (!is_bool($flag)) { - throw new InvalidArgumentException; - } - - $this->forceCoversAnnotation = $flag; - } - - /** - * @param boolean $flag - * @throws InvalidArgumentException - */ - public function setMapTestClassNameToCoveredClassName($flag) - { - if (!is_bool($flag)) { - throw new InvalidArgumentException; - } - - $this->mapTestClassNameToCoveredClassName = $flag; - } - - /** - * @param boolean $flag - * @throws InvalidArgumentException - */ - public function setProcessUncoveredFilesFromWhitelist($flag) - { - if (!is_bool($flag)) { - throw new InvalidArgumentException; - } - - $this->processUncoveredFilesFromWhitelist = $flag; - } - - /** - * Applies the @covers annotation filtering. - * - * @param array $data - * @param mixed $id - */ - protected function applyCoversAnnotationFilter(&$data, $id) - { - if ($id instanceof PHPUnit_Framework_TestCase) { - $testClassName = get_class($id); - $linesToBeCovered = PHP_CodeCoverage_Util::getLinesToBeCovered( - $testClassName, $id->getName() - ); - - if ($this->mapTestClassNameToCoveredClassName && - empty($linesToBeCovered)) { - $testedClass = substr($testClassName, 0, -4); - - if (class_exists($testedClass)) { - $class = new ReflectionClass($testedClass); - - $linesToBeCovered = array( - $class->getFileName() => range( - $class->getStartLine(), $class->getEndLine() - ) - ); - } - } - } else { - $linesToBeCovered = array(); - } - - if (!empty($linesToBeCovered)) { - $data = array_intersect_key($data, $linesToBeCovered); - - foreach (array_keys($data) as $filename) { - $data[$filename] = array_intersect_key( - $data[$filename], array_flip($linesToBeCovered[$filename]) - ); - } - } - - else if ($this->forceCoversAnnotation) { - $data = array(); - } - } - - /** - * Applies the blacklist/whitelist filtering. - * - * @param array $data - */ - protected function applyListsFilter(&$data) - { - foreach (array_keys($data) as $filename) { - if ($this->filter->isFiltered($filename)) { - unset($data[$filename]); - } - } - } - - /** - * @since Method available since Release 1.1.0 - */ - protected function initializeFilesThatAreSeenTheFirstTime($data) - { - foreach ($data as $file => $lines) { - if ($this->filter->isFile($file) && !isset($this->data[$file])) { - $this->data[$file] = array(); - - foreach ($lines as $k => $v) { - $this->data[$file][$k] = $v == -2 ? NULL : array(); - } - } - } - } - - /** - * Processes whitelisted files that are not covered. - */ - protected function processUncoveredFilesFromWhitelist() - { - $data = array(); - $uncoveredFiles = array_diff( - $this->filter->getWhitelist(), array_keys($this->data) - ); - - foreach ($uncoveredFiles as $uncoveredFile) { - if (!file_exists($uncoveredFile)) { - continue; - } - - if ($this->cacheTokens) { - $tokens = PHP_Token_Stream_CachingFactory::get($uncoveredFile); - } else { - $tokens = new PHP_Token_Stream($uncoveredFile); - } - - $classes = $tokens->getClasses(); - $interfaces = $tokens->getInterfaces(); - $functions = $tokens->getFunctions(); - unset($tokens); - - foreach (array_keys($classes) as $class) { - if (class_exists($class, FALSE)) { - continue 2; - } - } - - unset($classes); - - foreach (array_keys($interfaces) as $interface) { - if (interface_exists($interface, FALSE)) { - continue 2; - } - } - - unset($interfaces); - - foreach (array_keys($functions) as $function) { - if (function_exists($function)) { - continue 2; - } - } - - unset($functions); - - $this->driver->start(); - include_once $uncoveredFile; - $coverage = $this->driver->stop(); - - foreach ($coverage as $file => $fileCoverage) { - if (!isset($data[$file]) && - in_array($file, $uncoveredFiles)) { - foreach (array_keys($fileCoverage) as $key) { - if ($fileCoverage[$key] == 1) { - $fileCoverage[$key] = -1; - } - } - - $data[$file] = $fileCoverage; - } - } - } - - $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST'); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php deleted file mode 100644 index da3a90d..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php +++ /dev/null @@ -1,97 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -require_once 'File/Iterator/Autoload.php'; -require_once 'PHP/Token/Stream/Autoload.php'; -require_once 'Text/Template/Autoload.php'; - -function php_codecoverage_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - 'php_codecoverage' => '/CodeCoverage.php', - 'php_codecoverage_driver' => '/CodeCoverage/Driver.php', - 'php_codecoverage_driver_xdebug' => '/CodeCoverage/Driver/Xdebug.php', - 'php_codecoverage_exception' => '/CodeCoverage/Exception.php', - 'php_codecoverage_filter' => '/CodeCoverage/Filter.php', - 'php_codecoverage_report_clover' => '/CodeCoverage/Report/Clover.php', - 'php_codecoverage_report_factory' => '/CodeCoverage/Report/Factory.php', - 'php_codecoverage_report_html' => '/CodeCoverage/Report/HTML.php', - 'php_codecoverage_report_html_renderer' => '/CodeCoverage/Report/HTML/Renderer.php', - 'php_codecoverage_report_html_renderer_dashboard' => '/CodeCoverage/Report/HTML/Renderer/Dashboard.php', - 'php_codecoverage_report_html_renderer_directory' => '/CodeCoverage/Report/HTML/Renderer/Directory.php', - 'php_codecoverage_report_html_renderer_file' => '/CodeCoverage/Report/HTML/Renderer/File.php', - 'php_codecoverage_report_node' => '/CodeCoverage/Report/Node.php', - 'php_codecoverage_report_node_directory' => '/CodeCoverage/Report/Node/Directory.php', - 'php_codecoverage_report_node_file' => '/CodeCoverage/Report/Node/File.php', - 'php_codecoverage_report_node_iterator' => '/CodeCoverage/Report/Node/Iterator.php', - 'php_codecoverage_report_php' => '/CodeCoverage/Report/PHP.php', - 'php_codecoverage_report_text' => '/CodeCoverage/Report/Text.php', - 'php_codecoverage_util' => '/CodeCoverage/Util.php' - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('php_codecoverage_autoload'); diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php.in b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php.in deleted file mode 100644 index 39809a0..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Autoload.php.in +++ /dev/null @@ -1,79 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -require_once 'File/Iterator/Autoload.php'; -require_once 'PHP/Token/Stream/Autoload.php'; -require_once 'Text/Template/Autoload.php'; - -function php_codecoverage_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - ___CLASSLIST___ - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('php_codecoverage_autoload'); diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver.php deleted file mode 100644 index 7f48383..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver.php +++ /dev/null @@ -1,71 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Interface for code coverage drivers. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -interface PHP_CodeCoverage_Driver -{ - /** - * Start collection of code coverage information. - */ - public function start(); - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop(); -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver/Xdebug.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver/Xdebug.php deleted file mode 100644 index 58fa33c..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Driver/Xdebug.php +++ /dev/null @@ -1,98 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Driver for Xdebug's code coverage functionality. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - * @codeCoverageIgnore - */ -class PHP_CodeCoverage_Driver_Xdebug implements PHP_CodeCoverage_Driver -{ - /** - * Constructor. - */ - public function __construct() - { - if (!extension_loaded('xdebug')) { - throw new PHP_CodeCoverage_Exception('Xdebug is not loaded.'); - } - - if (version_compare(phpversion('xdebug'), '2.2.0-dev', '>=') && - !ini_get('xdebug.coverage_enable')) { - throw new PHP_CodeCoverage_Exception( - 'You need to set xdebug.coverage_enable=On in your php.ini.' - ); - } - } - - /** - * Start collection of code coverage information. - */ - public function start() - { - xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE); - } - - /** - * Stop collection of code coverage information. - * - * @return array - */ - public function stop() - { - $codeCoverage = xdebug_get_code_coverage(); - xdebug_stop_code_coverage(); - - return $codeCoverage; - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Exception.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Exception.php deleted file mode 100644 index 8513b20..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Exception.php +++ /dev/null @@ -1,60 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Eyception class for PHP_CodeCoverage component. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Exception extends RuntimeException -{ -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Filter.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Filter.php deleted file mode 100644 index 708ddfd..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Filter.php +++ /dev/null @@ -1,343 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Filter for blacklisting and whitelisting of code coverage information. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Filter -{ - /** - * Source files that are blacklisted. - * - * @var array - */ - protected $blacklistedFiles = array(); - - /** - * Source files that are whitelisted. - * - * @var array - */ - protected $whitelistedFiles = array(); - - /** - * Prefills the blacklist with source files used by PHPUnit - * and PHP_CodeCoverage. - */ - public function __construct() - { - $functions = array( - 'file_iterator_autoload', - 'php_codecoverage_autoload', - 'php_invoker_autoload', - 'php_timer_autoload', - 'php_tokenstream_autoload', - 'phpunit_autoload', - 'phpunit_dbunit_autoload', - 'phpunit_mockobject_autoload', - 'phpunit_selenium_autoload', - 'phpunit_story_autoload', - 'text_template_autoload' - ); - - foreach ($functions as $function) { - if (function_exists($function)) { - $this->addFilesToBlacklist($function()); - } - } - - $file = PHP_CodeCoverage_Util::fileExistsInIncludePath( - 'SymfonyComponents/YAML/sfYaml.php' - ); - - if ($file) { - $this->addFileToBlacklist($file); - } - - $file = PHP_CodeCoverage_Util::fileExistsInIncludePath( - 'SymfonyComponents/YAML/sfYamlDumper.php' - ); - - if ($file) { - $this->addFileToBlacklist($file); - } - } - - /** - * Adds a directory to the blacklist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function addDirectoryToBlacklist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->addFileToBlacklist($file); - } - } - - /** - * Adds a file to the blacklist. - * - * @param string $filename - */ - public function addFileToBlacklist($filename) - { - $this->blacklistedFiles[realpath($filename)] = TRUE; - } - - /** - * Adds files to the blacklist. - * - * @param array $files - */ - public function addFilesToBlacklist(array $files) - { - foreach ($files as $file) { - $this->addFileToBlacklist($file); - } - } - - /** - * Removes a directory from the blacklist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function removeDirectoryFromBlacklist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->removeFileFromBlacklist($file); - } - } - - /** - * Removes a file from the blacklist. - * - * @param string $filename - */ - public function removeFileFromBlacklist($filename) - { - $filename = realpath($filename); - - if (isset($this->blacklistedFiles[$filename])) { - unset($this->blacklistedFiles[$filename]); - } - } - - /** - * Adds a directory to the whitelist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->addFileToWhitelist($file); - } - } - - /** - * Adds a file to the whitelist. - * - * When the whitelist is empty (default), blacklisting is used. - * When the whitelist is not empty, whitelisting is used. - * - * @param string $filename - */ - public function addFileToWhitelist($filename) - { - $this->whitelistedFiles[realpath($filename)] = TRUE; - } - - /** - * Adds files to the whitelist. - * - * @param array $files - */ - public function addFilesToWhitelist(array $files) - { - foreach ($files as $file) { - $this->addFileToWhitelist($file); - } - } - - /** - * Removes a directory from the whitelist (recursively). - * - * @param string $directory - * @param string $suffix - * @param string $prefix - */ - public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '') - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - $directory, $suffix, $prefix - ); - - foreach ($files as $file) { - $this->removeFileFromWhitelist($file); - } - } - - /** - * Removes a file from the whitelist. - * - * @param string $filename - */ - public function removeFileFromWhitelist($filename) - { - $filename = realpath($filename); - - if (isset($this->whitelistedFiles[$filename])) { - unset($this->whitelistedFiles[$filename]); - } - } - - /** - * Checks whether a filename is a real filename. - * - * @param string $filename - */ - public function isFile($filename) - { - if ($filename == '-' || - strpos($filename, 'eval()\'d code') !== FALSE || - strpos($filename, 'runtime-created function') !== FALSE || - strpos($filename, 'runkit created function') !== FALSE || - strpos($filename, 'assert code') !== FALSE || - strpos($filename, 'regexp code') !== FALSE) { - return FALSE; - } - - return TRUE; - } - - /** - * Checks whether or not a file is filtered. - * - * When the whitelist is empty (default), blacklisting is used. - * When the whitelist is not empty, whitelisting is used. - * - * @param string $filename - * @param boolean $ignoreWhitelist - * @return boolean - * @throws InvalidArgumentException - */ - public function isFiltered($filename, $ignoreWhitelist = FALSE) - { - if (!is_bool($ignoreWhitelist)) { - throw new InvalidArgumentException; - } - - $filename = realpath($filename); - - if (!$ignoreWhitelist && !empty($this->whitelistedFiles)) { - return !isset($this->whitelistedFiles[$filename]); - } - - return isset($this->blacklistedFiles[$filename]); - } - - /** - * Returns the list of blacklisted files. - * - * @return array - */ - public function getBlacklist() - { - return array_keys($this->blacklistedFiles); - } - - /** - * Returns the list of whitelisted files. - * - * @return array - */ - public function getWhitelist() - { - return array_keys($this->whitelistedFiles); - } - - /** - * Returns whether this filter has a whitelist. - * - * @return boolean - * @since Method available since Release 1.1.0 - */ - public function hasWhitelist() - { - return !empty($this->whitelistedFiles); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Clover.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Clover.php deleted file mode 100644 index 8d8510a..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Clover.php +++ /dev/null @@ -1,353 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Generates a Clover XML logfile from an PHP_CodeCoverage object. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Report_Clover -{ - /** - * @param PHP_CodeCoverage $coverage - * @param string $target - * @param string $name - * @return string - */ - public function process(PHP_CodeCoverage $coverage, $target = NULL, $name = NULL) - { - $xmlDocument = new DOMDocument('1.0', 'UTF-8'); - $xmlDocument->formatOutput = TRUE; - - $xmlCoverage = $xmlDocument->createElement('coverage'); - $xmlCoverage->setAttribute('generated', (int)$_SERVER['REQUEST_TIME']); - $xmlDocument->appendChild($xmlCoverage); - - $xmlProject = $xmlDocument->createElement('project'); - $xmlProject->setAttribute('timestamp', (int)$_SERVER['REQUEST_TIME']); - - if (is_string($name)) { - $xmlProject->setAttribute('name', $name); - } - - $xmlCoverage->appendChild($xmlProject); - - $packages = array(); - $report = $coverage->getReport(); - unset($coverage); - - foreach ($report as $item) { - $namespace = 'global'; - - if (!$item instanceof PHP_CodeCoverage_Report_Node_File) { - continue; - } - - $xmlFile = $xmlDocument->createElement('file'); - $xmlFile->setAttribute('name', $item->getPath()); - - $classes = array_merge($item->getClasses(), $item->getTraits()); - $coverage = $item->getCoverageData(); - $lines = array(); - $ignoredLines = $item->getIgnoredLines(); - - foreach ($classes as $className => $class) { - $classStatements = 0; - $coveredClassStatements = 0; - $coveredMethods = 0; - - foreach ($class['methods'] as $methodName => $method) { - $methodCount = 0; - $methodLines = 0; - $methodLinesCovered = 0; - - for ($i = $method['startLine']; - $i <= $method['endLine']; - $i++) { - if (isset($ignoredLines[$i])) { - continue; - } - - $add = TRUE; - $count = 0; - - if (isset($coverage[$i])) { - if ($coverage[$i] !== NULL) { - $classStatements++; - $methodLines++; - } else { - $add = FALSE; - } - - $count = count($coverage[$i]); - - if ($count > 0) { - $coveredClassStatements++; - $methodLinesCovered++; - } - } else { - $add = FALSE; - } - - $methodCount = max($methodCount, $count); - - if ($add) { - $lines[$i] = array( - 'count' => $count, 'type' => 'stmt' - ); - } - } - - if ($methodCount > 0) { - $coveredMethods++; - } - - $lines[$method['startLine']] = array( - 'count' => $methodCount, - 'crap' => PHP_CodeCoverage_Util::crap( - $method['ccn'], - PHP_CodeCoverage_Util::percent( - $methodLinesCovered, - $methodLines - ) - ), - 'type' => 'method', - 'name' => $methodName - ); - } - - if (!empty($class['package']['namespace'])) { - $namespace = $class['package']['namespace']; - } - - $xmlClass = $xmlDocument->createElement('class'); - $xmlClass->setAttribute('name', $className); - $xmlClass->setAttribute('namespace', $namespace); - - if (!empty($class['package']['fullPackage'])) { - $xmlClass->setAttribute( - 'fullPackage', $class['package']['fullPackage'] - ); - } - - if (!empty($class['package']['category'])) { - $xmlClass->setAttribute( - 'category', $class['package']['category'] - ); - } - - if (!empty($class['package']['package'])) { - $xmlClass->setAttribute( - 'package', $class['package']['package'] - ); - } - - if (!empty($class['package']['subpackage'])) { - $xmlClass->setAttribute( - 'subpackage', $class['package']['subpackage'] - ); - } - - $xmlFile->appendChild($xmlClass); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('methods', count($class['methods'])); - $xmlMetrics->setAttribute('coveredmethods', $coveredMethods); - $xmlMetrics->setAttribute('conditionals', 0); - $xmlMetrics->setAttribute('coveredconditionals', 0); - $xmlMetrics->setAttribute('statements', $classStatements); - $xmlMetrics->setAttribute( - 'coveredstatements', $coveredClassStatements - ); - $xmlMetrics->setAttribute( - 'elements', - count($class['methods']) + - $classStatements - /* + conditionals */); - $xmlMetrics->setAttribute( - 'coveredelements', - $coveredMethods + - $coveredClassStatements - /* + coveredconditionals */ - ); - $xmlClass->appendChild($xmlMetrics); - } - - foreach ($coverage as $line => $data) { - if ($data === NULL || - isset($lines[$line]) || - isset($ignoredLines[$line])) { - continue; - } - - $lines[$line] = array( - 'count' => count($data), 'type' => 'stmt' - ); - } - - ksort($lines); - - foreach ($lines as $line => $data) { - if (isset($ignoredLines[$line])) { - continue; - } - - $xmlLine = $xmlDocument->createElement('line'); - $xmlLine->setAttribute('num', $line); - $xmlLine->setAttribute('type', $data['type']); - - if (isset($data['name'])) { - $xmlLine->setAttribute('name', $data['name']); - } - - if (isset($data['crap'])) { - $xmlLine->setAttribute('crap', $data['crap']); - } - - $xmlLine->setAttribute('count', $data['count']); - $xmlFile->appendChild($xmlLine); - } - - $linesOfCode = $item->getLinesOfCode(); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); - $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); - $xmlMetrics->setAttribute('classes', $item->getNumClasses()); - $xmlMetrics->setAttribute('methods', $item->getNumMethods()); - $xmlMetrics->setAttribute( - 'coveredmethods', $item->getNumTestedMethods() - ); - $xmlMetrics->setAttribute('conditionals', 0); - $xmlMetrics->setAttribute('coveredconditionals', 0); - $xmlMetrics->setAttribute( - 'statements', $item->getNumExecutableLines() - ); - $xmlMetrics->setAttribute( - 'coveredstatements', $item->getNumExecutedLines() - ); - $xmlMetrics->setAttribute( - 'elements', - $item->getNumMethods() + - $item->getNumExecutableLines() - /* + conditionals */ - ); - $xmlMetrics->setAttribute( - 'coveredelements', - $item->getNumTestedMethods() + - $item->getNumExecutedLines() - /* + coveredconditionals */ - ); - $xmlFile->appendChild($xmlMetrics); - - if ($namespace == 'global') { - $xmlProject->appendChild($xmlFile); - } else { - if (!isset($packages[$namespace])) { - $packages[$namespace] = $xmlDocument->createElement( - 'package' - ); - - $packages[$namespace]->setAttribute('name', $namespace); - $xmlProject->appendChild($packages[$namespace]); - } - - $packages[$namespace]->appendChild($xmlFile); - } - } - - $linesOfCode = $report->getLinesOfCode(); - - $xmlMetrics = $xmlDocument->createElement('metrics'); - $xmlMetrics->setAttribute('files', count($report)); - $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); - $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); - $xmlMetrics->setAttribute( - 'classes', $report->getNumClasses() - ); - $xmlMetrics->setAttribute('methods', $report->getNumMethods()); - $xmlMetrics->setAttribute( - 'coveredmethods', $report->getNumTestedMethods() - ); - $xmlMetrics->setAttribute('conditionals', 0); - $xmlMetrics->setAttribute('coveredconditionals', 0); - $xmlMetrics->setAttribute( - 'statements', $report->getNumExecutableLines() - ); - $xmlMetrics->setAttribute( - 'coveredstatements', $report->getNumExecutedLines() - ); - $xmlMetrics->setAttribute( - 'elements', - $report->getNumMethods() + - $report->getNumExecutableLines() - /* + conditionals */ - ); - $xmlMetrics->setAttribute( - 'coveredelements', - $report->getNumTestedMethods() + - $report->getNumExecutedLines() - /* + coveredconditionals */ - ); - $xmlProject->appendChild($xmlMetrics); - - if ($target !== NULL) { - if (!is_dir(dirname($target))) { - mkdir(dirname($target), 0777, TRUE); - } - - return $xmlDocument->save($target); - } else { - return $xmlDocument->saveXML(); - } - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Factory.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Factory.php deleted file mode 100644 index a31b110..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Factory.php +++ /dev/null @@ -1,281 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Factory for PHP_CodeCoverage_Report_Node_* object graphs. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Factory -{ - /** - * @param PHP_CodeCoverage $coverage - */ - public function create(PHP_CodeCoverage $coverage) - { - $files = $coverage->getData(); - $commonPath = $this->reducePaths($files); - $root = new PHP_CodeCoverage_Report_Node_Directory( - $commonPath, NULL - ); - - $this->addItems( - $root, - $this->buildDirectoryStructure($files), - $coverage->getTests(), - $coverage->getCacheTokens() - ); - - return $root; - } - - /** - * @param PHP_CodeCoverage_Report_Node_Directory $root - * @param array $items - * @param array $tests - * @param boolean $cacheTokens - */ - protected function addItems(PHP_CodeCoverage_Report_Node_Directory $root, array $items, array $tests, $cacheTokens) - { - foreach ($items as $key => $value) { - if (substr($key, -2) == '/f') { - $key = substr($key, 0, -2); - - if (file_exists($root->getPath() . DIRECTORY_SEPARATOR . $key)) { - $root->addFile($key, $value, $tests, $cacheTokens); - } - } else { - $child = $root->addDirectory($key); - $this->addItems($child, $value, $tests, $cacheTokens); - } - } - } - - /** - * Builds an array representation of the directory structure. - * - * For instance, - * - * - * Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * is transformed into - * - * - * Array - * ( - * [.] => Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * ) - * - * - * @param array $files - * @return array - */ - protected function buildDirectoryStructure($files) - { - $result = array(); - - foreach ($files as $path => $file) { - $path = explode('/', $path); - $pointer = &$result; - $max = count($path); - - for ($i = 0; $i < $max; $i++) { - if ($i == ($max - 1)) { - $type = '/f'; - } else { - $type = ''; - } - - $pointer = &$pointer[$path[$i] . $type]; - } - - $pointer = $file; - } - - return $result; - } - - /** - * Reduces the paths by cutting the longest common start path. - * - * For instance, - * - * - * Array - * ( - * [/home/sb/Money/Money.php] => Array - * ( - * ... - * ) - * - * [/home/sb/Money/MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * is reduced to - * - * - * Array - * ( - * [Money.php] => Array - * ( - * ... - * ) - * - * [MoneyBag.php] => Array - * ( - * ... - * ) - * ) - * - * - * @param array $files - * @return string - */ - protected function reducePaths(&$files) - { - if (empty($files)) { - return '.'; - } - - $commonPath = ''; - $paths = array_keys($files); - - if (count($files) == 1) { - $commonPath = dirname($paths[0]) . '/'; - $files[basename($paths[0])] = $files[$paths[0]]; - - unset($files[$paths[0]]); - - return $commonPath; - } - - $max = count($paths); - - for ($i = 0; $i < $max; $i++) { - // strip phar:// prefixes - if (strpos($paths[$i], 'phar://') === 0) { - $paths[$i] = substr($paths[$i], 7); - } - $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]); - - if (empty($paths[$i][0])) { - $paths[$i][0] = DIRECTORY_SEPARATOR; - } - } - - $done = FALSE; - $max = count($paths); - - while (!$done) { - for ($i = 0; $i < $max - 1; $i++) { - if (!isset($paths[$i][0]) || - !isset($paths[$i+1][0]) || - $paths[$i][0] != $paths[$i+1][0]) { - $done = TRUE; - break; - } - } - - if (!$done) { - $commonPath .= $paths[0][0]; - - if ($paths[0][0] != DIRECTORY_SEPARATOR) { - $commonPath .= DIRECTORY_SEPARATOR; - } - - for ($i = 0; $i < $max; $i++) { - array_shift($paths[$i]); - } - } - } - - $original = array_keys($files); - $max = count($original); - - for ($i = 0; $i < $max; $i++) { - $files[join('/', $paths[$i])] = $files[$original[$i]]; - unset($files[$original[$i]]); - } - - ksort($files); - - return substr($commonPath, 0, -1); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML.php deleted file mode 100644 index 0417f90..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML.php +++ /dev/null @@ -1,213 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Generates an HTML report from an PHP_CodeCoverage object. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Report_HTML -{ - /** - * @var string - */ - protected $templatePath; - - /** - * @var string - */ - protected $charset; - - /** - * @var string - */ - protected $generator; - - /** - * @var integer - */ - protected $lowUpperBound; - - /** - * @var integer - */ - protected $highLowerBound; - - /** - * @var boolean - */ - protected $highlight; - - /** - * @var string - */ - protected $title; - - /** - * @var boolean - */ - protected $yui; - - /** - * Constructor. - * - * @param array $options - */ - public function __construct($title = '', $charset = 'UTF-8', $yui = TRUE, $highlight = FALSE, $lowUpperBound = 35, $highLowerBound = 70, $generator = '') - { - $this->charset = $charset; - $this->generator = $generator; - $this->highLowerBound = $highLowerBound; - $this->highlight = $highlight; - $this->lowUpperBound = $lowUpperBound; - $this->title = $title; - $this->yui = $yui; - - $this->templatePath = sprintf( - '%s%sHTML%sRenderer%sTemplate%s', - - dirname(__FILE__), - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR - ); - } - - /** - * @param PHP_CodeCoverage $coverage - * @param string $target - */ - public function process(PHP_CodeCoverage $coverage, $target) - { - $target = PHP_CodeCoverage_Util::getDirectory($target); - $report = $coverage->getReport(); - unset($coverage); - - if (!isset($_SERVER['REQUEST_TIME'])) { - $_SERVER['REQUEST_TIME'] = time(); - } - - $date = date('D M j G:i:s T Y', $_SERVER['REQUEST_TIME']); - - $dashboard = new PHP_CodeCoverage_Report_HTML_Renderer_Dashboard( - $this->templatePath, - $this->charset, - $this->generator, - $date, - $this->lowUpperBound, - $this->highLowerBound - ); - - $directory = new PHP_CodeCoverage_Report_HTML_Renderer_Directory( - $this->templatePath, - $this->charset, - $this->generator, - $date, - $this->lowUpperBound, - $this->highLowerBound - ); - - $file = new PHP_CodeCoverage_Report_HTML_Renderer_File( - $this->templatePath, - $this->charset, - $this->generator, - $date, - $this->lowUpperBound, - $this->highLowerBound, - $this->highlight, - $this->yui - ); - - $dashboard->render( - $report, $target . 'index.dashboard.html', $this->title - ); - - $directory->render($report, $target . 'index.html', $this->title); - - foreach ($report as $node) { - $id = $node->getId(); - - if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) { - $dashboard->render($node, $target . $id . '.dashboard.html'); - $directory->render($node, $target . $id . '.html'); - } else { - $file->render($node, $target . $id . '.html'); - } - } - - $this->copyFiles($target); - } - - /** - * @param string $target - */ - protected function copyFiles($target) - { - $files = array( - 'close12_1.gif', - 'container.css', - 'container-min.js', - 'directory.png', - 'file.png', - 'glass.png', - 'highcharts.js', - 'jquery.min.js', - 'style.css', - 'yahoo-dom-event.js' - ); - - foreach ($files as $file) { - copy($this->templatePath . $file, $target . $file); - } - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer.php deleted file mode 100644 index 6fd6474..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer.php +++ /dev/null @@ -1,239 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Base class for PHP_CodeCoverage_Report_Node renderers. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -abstract class PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @var string - */ - protected $templatePath; - - /** - * @var string - */ - protected $charset; - - /** - * @var string - */ - protected $generator; - - /** - * @var string - */ - protected $date; - - /** - * @var integer - */ - protected $lowUpperBound; - - /** - * @var integer - */ - protected $highLowerBound; - - /** - * Constructor. - * - * @param string $templatePath - * @param string $charset - * @param string $generator - * @param string $date - * @param integer $lowUpperBound - * @param integer $highLowerBound - */ - public function __construct($templatePath, $charset, $generator, $date, $lowUpperBound, $highLowerBound) - { - $this->templatePath = $templatePath; - $this->charset = $charset; - $this->generator = $generator; - $this->date = $date; - $this->lowUpperBound = $lowUpperBound; - $this->highLowerBound = $highLowerBound; - } - - /** - * @param integer $percent - * @return array - */ - protected function getColorLevel($percent) - { - if ($percent < $this->lowUpperBound) { - $color = 'scarlet_red'; - $level = 'Lo'; - } - - else if ($percent >= $this->lowUpperBound && - $percent < $this->highLowerBound) { - $color = 'butter'; - $level = 'Med'; - } - - else { - $color = 'chameleon'; - $level = 'Hi'; - } - - return array($color, $level); - } - - /** - * @param Text_Template $template - * @param array $data - * @return string - */ - protected function renderItemTemplate(Text_Template $template, array $data) - { - if (isset($data['numClasses']) && $data['numClasses'] > 0) { - list($classesColor, $classesLevel) = $this->getColorLevel( - $data['testedClassesPercent'] - ); - - $classesNumber = $data['numTestedClasses'] . ' / ' . - $data['numClasses']; - } else { - $classesColor = 'snow'; - $classesLevel = 'None'; - $classesNumber = ' '; - } - - if ($data['numMethods'] > 0) { - list($methodsColor, $methodsLevel) = $this->getColorLevel( - $data['testedMethodsPercent'] - ); - - $methodsNumber = $data['numTestedMethods'] . ' / ' . - $data['numMethods']; - } else { - $methodsColor = 'snow'; - $methodsLevel = 'None'; - $methodsNumber = ' '; - } - - list($linesColor, $linesLevel) = $this->getColorLevel( - $data['linesExecutedPercent'] - ); - - $template->setVar( - array( - 'itemClass' => isset($data['itemClass']) ? $data['itemClass'] : '', - 'icon' => isset($data['icon']) ? $data['icon'] : '', - 'crap' => isset($data['crap']) ? $data['crap'] : '', - 'name' => $data['name'], - 'lines_color' => $linesColor, - 'lines_executed_width' => $data['linesExecutedPercent'], - 'lines_not_executed_width' => 100 - $data['linesExecutedPercent'], - 'lines_executed_percent' => $data['linesExecutedPercentAsString'], - 'lines_level' => $linesLevel, - 'num_executed_lines' => $data['numExecutedLines'], - 'num_executable_lines' => $data['numExecutableLines'], - 'methods_color' => $methodsColor, - 'methods_tested_width' => $data['testedMethodsPercent'], - 'methods_not_tested_width' => 100 - $data['testedMethodsPercent'], - 'methods_tested_percent' => $data['testedMethodsPercentAsString'], - 'methods_level' => $methodsLevel, - 'methods_number' => $methodsNumber, - 'classes_color' => $classesColor, - 'classes_tested_width' => isset($data['testedClassesPercent']) ? $data['testedClassesPercent'] : '', - 'classes_not_tested_width' => isset($data['testedClassesPercent']) ? 100 - $data['testedClassesPercent'] : '', - 'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '', - 'classes_level' => $classesLevel, - 'classes_number' => $classesNumber - ) - ); - - return $template->render(); - } - - /** - * @param Text_Template $template - * @param string $title - * @param PHP_CodeCoverage_Report_Node $node - */ - protected function setCommonTemplateVariables(Text_Template $template, $title, PHP_CodeCoverage_Report_Node $node = NULL) - { - $link = ''; - - if ($node !== NULL) { - $path = $node->getPathAsArray(); - - foreach ($path as $step) { - $link .= sprintf( - '%s%s', - !empty($link) ? '/' : '', - $step->getId(), - $step->getName() - ); - } - } - - $template->setVar( - array( - 'title' => $title, - 'link' => $link, - 'charset' => $this->charset, - 'date' => $this->date, - 'version' => '1.1.2', - 'php_version' => PHP_VERSION, - 'generator' => $this->generator, - 'low_upper_bound' => $this->lowUpperBound, - 'high_lower_bound' => $this->highLowerBound - ) - ); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Dashboard.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Dashboard.php deleted file mode 100644 index c85aef2..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Dashboard.php +++ /dev/null @@ -1,236 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Renders the dashboard for a PHP_CodeCoverage_Report_Node_Directory node. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_HTML_Renderer_Dashboard extends PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @param PHP_CodeCoverage_Report_Node_Directory $node - * @param string $file - * @param string $title - */ - public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file, $title = NULL) - { - if ($title === NULL) { - $title = $node->getName(); - } - - $classes = array_merge($node->getClasses(), $node->getTraits()); - $template = new Text_Template( - $this->templatePath . 'dashboard.html' - ); - - $this->setCommonTemplateVariables($template, $title); - - $template->setVar( - array( - 'least_tested_methods' => $this->leastTestedMethods($classes), - 'top_project_risks' => $this->topProjectRisks($classes), - 'cc_values' => $this->classComplexity($classes), - 'ccd_values' => $this->classCoverageDistribution($classes), - 'backlink' => basename(str_replace('.dashboard', '', $file)) - ) - ); - - $template->renderTo($file); - } - - /** - * Returns the data for the Class Complexity chart. - * - * @param array $classes - * @return string - */ - protected function classComplexity(array $classes) - { - $data = array(); - - foreach ($classes as $name => $class) { - $data[] = array( - $class['coverage'], - $class['ccn'], - sprintf( - '%s', - $class['link'], - $name - ) - ); - } - - return json_encode($data); - } - - /** - * Returns the data for the Class Coverage Distribution chart. - * - * @param array $classes - * @return string - */ - protected function classCoverageDistribution(array $classes) - { - $data = array( - '0%' => 0, - '0-10%' => 0, - '10-20%' => 0, - '20-30%' => 0, - '30-40%' => 0, - '40-50%' => 0, - '50-60%' => 0, - '60-70%' => 0, - '70-80%' => 0, - '80-90%' => 0, - '90-100%' => 0, - '100%' => 0 - ); - - foreach ($classes as $class) { - if ($class['coverage'] == 0) { - $data['0%']++; - } - - else if ($class['coverage'] == 100) { - $data['100%']++; - } - - else { - $key = floor($class['coverage']/10)*10; - $key = $key . '-' . ($key + 10) . '%'; - $data[$key]++; - } - } - - return json_encode(array_values($data)); - } - - /** - * Returns the least tested methods. - * - * @param array $classes - * @param integer $max - * @return string - */ - protected function leastTestedMethods(array $classes, $max = 10) - { - $methods = array(); - - foreach ($classes as $className => $class) { - foreach ($class['methods'] as $methodName => $method) { - if ($method['coverage'] < 100) { - if ($className != '*') { - $key = $className . '::' . $methodName; - } else { - $key = $methodName; - } - - $methods[$key] = $method['coverage']; - } - } - } - - asort($methods); - - $methods = array_slice($methods, 0, min($max, count($methods))); - $buffer = ''; - - foreach ($methods as $name => $coverage) { - list($class, $method) = explode('::', $name); - - $buffer .= sprintf( - '
  • %s (%d%%)
  • ' . "\n", - $classes[$class]['methods'][$method]['link'], - $name, - $coverage - ); - } - - return $buffer; - } - - /** - * Returns the top project risks according to the CRAP index. - * - * @param array $classes - * @param integer $max - * @return string - */ - protected function topProjectRisks(array $classes, $max = 10) - { - $risks = array(); - - foreach ($classes as $className => $class) { - if ($class['coverage'] < 100 && - $class['ccn'] > count($class['methods'])) { - $risks[$className] = $class['crap']; - } - } - - arsort($risks); - - $buffer = ''; - $risks = array_slice($risks, 0, min($max, count($risks))); - - foreach ($risks as $name => $crap) { - $buffer .= sprintf( - '
  • %s (%d)
  • ' . "\n", - $classes[$name]['link'], - $name, - $crap - ); - } - - return $buffer; - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Directory.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Directory.php deleted file mode 100644 index 2411565..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Directory.php +++ /dev/null @@ -1,141 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Renders a PHP_CodeCoverage_Report_Node_Directory node. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_HTML_Renderer_Directory extends PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @param PHP_CodeCoverage_Report_Node_Directory $node - * @param string $file - * @param string $title - */ - public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file, $title = NULL) - { - if ($title === NULL) { - $title = $node->getName(); - } - - $template = new Text_Template($this->templatePath . 'directory.html'); - - $this->setCommonTemplateVariables($template, $title, $node); - - $items = $this->renderItem($node, TRUE); - - foreach ($node->getDirectories() as $item) { - $items .= $this->renderItem($item); - } - - foreach ($node->getFiles() as $item) { - $items .= $this->renderItem($item); - } - - $template->setVar( - array( - 'id' => $node->getId(), - 'items' => $items - ) - ); - - $template->renderTo($file); - } - - /** - * @param PHP_CodeCoverage_Report_Node $item - * @param boolean $total - * @return string - */ - protected function renderItem(PHP_CodeCoverage_Report_Node $item, $total = FALSE) - { - $data = array( - 'numClasses' => $item->getNumClasses(), - 'numTestedClasses' => $item->getNumTestedClasses(), - 'numMethods' => $item->getNumMethods(), - 'numTestedMethods' => $item->getNumTestedMethods(), - 'linesExecutedPercent' => $item->getLineExecutedPercent(FALSE), - 'linesExecutedPercentAsString' => $item->getLineExecutedPercent(), - 'numExecutedLines' => $item->getNumExecutedLines(), - 'numExecutableLines' => $item->getNumExecutableLines(), - 'testedMethodsPercent' => $item->getTestedMethodsPercent(FALSE), - 'testedMethodsPercentAsString' => $item->getTestedMethodsPercent(), - 'testedClassesPercent' => $item->getTestedClassesPercent(FALSE), - 'testedClassesPercentAsString' => $item->getTestedClassesPercent() - ); - - if ($total) { - $data['itemClass'] = 'coverDirectory'; - $data['name'] = 'Total'; - } else { - $data['name'] = sprintf( - '%s', - $item->getId(), - $item->getName() - ); - - if ($item instanceof PHP_CodeCoverage_Report_Node_Directory) { - $data['icon'] = 'directory '; - $data['itemClass'] = 'coverDirectory'; - } else { - $data['icon'] = 'file '; - $data['itemClass'] = 'coverFile'; - } - } - - return $this->renderItemTemplate( - new Text_Template($this->templatePath . 'directory_item.html'), - $data - ); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php deleted file mode 100644 index 67ab4af..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php +++ /dev/null @@ -1,645 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -if (!defined('T_NAMESPACE')) { - define('T_NAMESPACE', 1000); -} - -if (!defined('T_TRAIT')) { - define('T_TRAIT', 1001); -} - -if (!defined('T_INSTEADOF')) { - define('T_INSTEADOF', 1002); -} - -if (!defined('T_CALLABLE')) { - define('T_CALLABLE', 1003); -} - -/** - * Renders a PHP_CodeCoverage_Report_Node_File node. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_HTML_Renderer_File extends PHP_CodeCoverage_Report_HTML_Renderer -{ - /** - * @var boolean - */ - protected $highlight; - - /** - * @var boolean - */ - protected $yui; - - /** - * Constructor. - * - * @param string $templatePath - * @param string $charset - * @param string $generator - * @param string $date - * @param integer $lowUpperBound - * @param integer $highLowerBound - * @param boolean $highlight - * @param boolean $yui - */ - public function __construct($templatePath, $charset, $generator, $date, $lowUpperBound, $highLowerBound, $highlight, $yui) - { - parent::__construct( - $templatePath, - $charset, - $generator, - $date, - $lowUpperBound, - $highLowerBound - ); - - $this->highlight = $highlight; - $this->yui = $yui; - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @param string $file - * @param string $title - */ - public function render(PHP_CodeCoverage_Report_Node_File $node, $file, $title = NULL) - { - if ($title === NULL) { - $title = $node->getName(); - } - - if ($this->yui) { - $template = new Text_Template($this->templatePath . 'file.html'); - } else { - $template = new Text_Template( - $this->templatePath . 'file_no_yui.html' - ); - } - - list($source, $yuiTemplate) = $this->renderSource($node); - - $template->setVar( - array( - 'items' => $this->renderItems($node), - 'source' => $source, - 'yuiPanelJS' => $yuiTemplate - ) - ); - - $this->setCommonTemplateVariables($template, $title, $node); - - $template->renderTo($file); - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @return string - */ - protected function renderItems(PHP_CodeCoverage_Report_Node_File $node) - { - $template = new Text_Template($this->templatePath . 'file_item.html'); - - $methodItemTemplate = new Text_Template( - $this->templatePath . 'method_item.html' - ); - - $items = $this->renderItemTemplate( - $template, - array( - 'itemClass' => 'coverDirectory', - 'name' => 'Total', - 'numClasses' => $node->getNumClasses() + $node->getNumTraits(), - 'numTestedClasses' => $node->getNumTestedClasses() + $node->getNumTestedTraits(), - 'numMethods' => $node->getNumMethods(), - 'numTestedMethods' => $node->getNumTestedMethods(), - 'linesExecutedPercent' => $node->getLineExecutedPercent(FALSE), - 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(), - 'numExecutedLines' => $node->getNumExecutedLines(), - 'numExecutableLines' => $node->getNumExecutableLines(), - 'testedMethodsPercent' => $node->getTestedMethodsPercent(FALSE), - 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(), - 'testedClassesPercent' => $node->getTestedClassesPercent(FALSE), - 'testedClassesPercentAsString' => $node->getTestedClassesPercent(), - 'crap' => 'CRAP' - ) - ); - - $items .= $this->renderFunctionItems( - $node->getFunctions(), $methodItemTemplate - ); - - $items .= $this->renderTraitOrClassItems( - $node->getTraits(), $template, $methodItemTemplate - ); - - $items .= $this->renderTraitOrClassItems( - $node->getClasses(), $template, $methodItemTemplate - ); - - return $items; - } - - /** - * @param array $items - * @param Text_Template $template - * @return string - */ - protected function renderTraitOrClassItems(array $items, Text_Template $template, Text_Template $methodItemTemplate) - { - if (empty($items)) { - return ''; - } - - $buffer = ''; - - foreach ($items as $name => $item) { - $numMethods = count($item['methods']); - $numTestedMethods = 0; - - foreach ($item['methods'] as $method) { - if ($method['executedLines'] == $method['executableLines']) { - $numTestedMethods++; - } - } - - $buffer .= $this->renderItemTemplate( - $template, - array( - 'itemClass' => 'coverDirectory', - 'name' => $name, - 'numClasses' => 1, - 'numTestedClasses' => $numTestedMethods == $numMethods ? 1 : 0, - 'numMethods' => $numMethods, - 'numTestedMethods' => $numTestedMethods, - 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - FALSE - ), - 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - TRUE - ), - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - FALSE - ), - 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods, - $numMethods, - TRUE - ), - 'testedClassesPercent' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - FALSE - ), - 'testedClassesPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedMethods == $numMethods ? 1 : 0, - 1, - TRUE - ), - 'crap' => $item['crap'] - ) - ); - - foreach ($item['methods'] as $method) { - $buffer .= $this->renderFunctionOrMethodItem( - $methodItemTemplate, $method, ' ' - ); - } - } - - return $buffer; - } - - /** - * @param array $functions - * @param Text_Template $template - * @return string - */ - protected function renderFunctionItems(array $functions, Text_Template $template) - { - if (empty($functions)) { - return ''; - } - - $buffer = ''; - - foreach ($functions as $function) { - $buffer .= $this->renderFunctionOrMethodItem( - $template, $function - ); - } - - return $buffer; - } - - /** - * @param Text_Template $template - * @return string - */ - protected function renderFunctionOrMethodItem(Text_Template $template, array $item, $indent = '') - { - $numTestedItems = $item['executedLines'] == $item['executableLines'] ? 1 : 0; - - return $this->renderItemTemplate( - $template, - array( - 'name' => sprintf( - '%s%s', - $indent, - $item['startLine'], - htmlspecialchars($item['signature']) - ), - 'numMethods' => 1, - 'numTestedMethods' => $numTestedItems, - 'linesExecutedPercent' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - FALSE - ), - 'linesExecutedPercentAsString' => PHP_CodeCoverage_Util::percent( - $item['executedLines'], - $item['executableLines'], - TRUE - ), - 'numExecutedLines' => $item['executedLines'], - 'numExecutableLines' => $item['executableLines'], - 'testedMethodsPercent' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - FALSE - ), - 'testedMethodsPercentAsString' => PHP_CodeCoverage_Util::percent( - $numTestedItems, - 1, - TRUE - ), - 'crap' => $item['crap'] - ) - ); - } - - /** - * @param PHP_CodeCoverage_Report_Node_File $node - * @return string - */ - protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) - { - if ($this->yui) { - $yuiTemplate = new Text_Template( - $this->templatePath . 'yui_item.js' - ); - } - - $coverageData = $node->getCoverageData(); - $ignoredLines = $node->getIgnoredLines(); - $testData = $node->getTestData(); - list($codeLines, $fillup) = $this->loadFile($node->getPath()); - $lines = ''; - $yuiPanelJS = ''; - $i = 1; - - foreach ($codeLines as $line) { - $css = ''; - - if (!isset($ignoredLines[$i]) && isset($coverageData[$i])) { - $count = ''; - $numTests = count($coverageData[$i]); - - if ($coverageData[$i] === NULL) { - $color = 'lineDeadCode'; - $count = ' '; - } - - else if ($numTests == 0) { - $color = 'lineNoCov'; - $count = sprintf('%8d', 0); - } - - else { - $color = 'lineCov'; - $count = sprintf('%8d', $numTests); - - if ($this->yui) { - $buffer = ''; - $testCSS = ''; - - foreach ($coverageData[$i] as $test) { - switch ($testData[$test]) { - case 0: { - $testCSS = ' class=\"testPassed\"'; - } - break; - - case 1: - case 2: { - $testCSS = ' class=\"testIncomplete\"'; - } - break; - - case 3: { - $testCSS = ' class=\"testFailure\"'; - } - break; - - case 4: { - $testCSS = ' class=\"testError\"'; - } - break; - - default: { - $testCSS = ''; - } - } - - $buffer .= sprintf( - '%s', - - $testCSS, - addslashes(htmlspecialchars($test)) - ); - } - - if ($numTests > 1) { - $header = $numTests . ' tests cover'; - } else { - $header = '1 test covers'; - } - - $header .= ' line ' . $i; - - $yuiTemplate->setVar( - array( - 'line' => $i, - 'header' => $header, - 'tests' => $buffer - ), - FALSE - ); - - $yuiPanelJS .= $yuiTemplate->render(); - } - } - - $css = sprintf( - ' %s : ', - - $color, - $count - ); - } - - $_fillup = array_shift($fillup); - - if ($_fillup > 0) { - $line .= str_repeat(' ', $_fillup); - } - - $lines .= sprintf( - '' . - '%8d %s%s%s' . "\n", - - $i, - $i, - $i, - $i, - $i, - !empty($css) ? $css : ' : ', - !$this->highlight ? htmlspecialchars($line) : $line, - !empty($css) ? '' : '' - ); - - $i++; - } - - return array($lines, $yuiPanelJS); - } - - /** - * @param string $file - * @return array - */ - protected function loadFile($file) - { - $buffer = file_get_contents($file); - $lines = explode("\n", str_replace("\t", ' ', $buffer)); - $fillup = array(); - $result = array(); - - if (count($lines) == 0) { - return $result; - } - - $lines = array_map('rtrim', $lines); - $linesLength = array_map('strlen', $lines); - $width = max($linesLength); - - foreach ($linesLength as $line => $length) { - $fillup[$line] = $width - $length; - } - - if (!$this->highlight) { - unset($lines[count($lines)-1]); - return array($lines, $fillup); - } - - $tokens = token_get_all($buffer); - $stringFlag = FALSE; - $i = 0; - $result[$i] = ''; - - foreach ($tokens as $j => $token) { - if (is_string($token)) { - if ($token === '"' && $tokens[$j - 1] !== '\\') { - $result[$i] .= sprintf( - '%s', - - htmlspecialchars($token) - ); - - $stringFlag = !$stringFlag; - } else { - $result[$i] .= sprintf( - '%s', - - htmlspecialchars($token) - ); - } - - continue; - } - - list ($token, $value) = $token; - - $value = str_replace( - array("\t", ' '), - array('    ', ' '), - htmlspecialchars($value) - ); - - if ($value === "\n") { - $result[++$i] = ''; - } else { - $lines = explode("\n", $value); - - foreach ($lines as $jj => $line) { - $line = trim($line); - - if ($line !== '') { - if ($stringFlag) { - $colour = 'string'; - } else { - switch ($token) { - case T_INLINE_HTML: { - $colour = 'html'; - } - break; - - case T_COMMENT: - case T_DOC_COMMENT: { - $colour = 'comment'; - } - break; - - case T_ABSTRACT: - case T_ARRAY: - case T_AS: - case T_BREAK: - case T_CALLABLE: - case T_CASE: - case T_CATCH: - case T_CLASS: - case T_CLONE: - case T_CONTINUE: - case T_DEFAULT: - case T_ECHO: - case T_ELSE: - case T_ELSEIF: - case T_EMPTY: - case T_ENDDECLARE: - case T_ENDFOR: - case T_ENDFOREACH: - case T_ENDIF: - case T_ENDSWITCH: - case T_ENDWHILE: - case T_EXIT: - case T_EXTENDS: - case T_FINAL: - case T_FOREACH: - case T_FUNCTION: - case T_GLOBAL: - case T_IF: - case T_IMPLEMENTS: - case T_INCLUDE: - case T_INCLUDE_ONCE: - case T_INSTANCEOF: - case T_INSTEADOF: - case T_ISSET: - case T_LOGICAL_AND: - case T_LOGICAL_OR: - case T_LOGICAL_XOR: - case T_NAMESPACE: - case T_NEW: - case T_PRIVATE: - case T_PROTECTED: - case T_PUBLIC: - case T_REQUIRE: - case T_REQUIRE_ONCE: - case T_RETURN: - case T_STATIC: - case T_THROW: - case T_TRAIT: - case T_TRY: - case T_UNSET: - case T_USE: - case T_VAR: - case T_WHILE: { - $colour = 'keyword'; - } - break; - - default: { - $colour = 'default'; - } - } - } - - $result[$i] .= sprintf( - '%s', - - $colour, - $line - ); - } - - if (isset($lines[$jj + 1])) { - $result[++$i] = ''; - } - } - } - } - - unset($result[count($result)-1]); - - return array($result, $fillup); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/close12_1.gif b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/close12_1.gif deleted file mode 100644 index e2f67d72efc158da4e069822cbe338915761e396..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZ?wbhEHbz lf$Gy9znh?Y?^x%Bps9Cfw!UsJn!aoAS>7kV)`>G%0|4uCA&me4 diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/container-min.js b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/container-min.js deleted file mode 100644 index 5be17aa..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/container-min.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright (c) 2011, Yahoo! Inc. All rights reserved. -Code licensed under the BSD License: -http://developer.yahoo.com/yui/license.html -version: 2.9.0 -*/ -(function(){YAHOO.util.Config=function(d){if(d){this.init(d);}};var b=YAHOO.lang,c=YAHOO.util.CustomEvent,a=YAHOO.util.Config;a.CONFIG_CHANGED_EVENT="configChanged";a.BOOLEAN_TYPE="boolean";a.prototype={owner:null,queueInProgress:false,config:null,initialConfig:null,eventQueue:null,configChangedEvent:null,init:function(d){this.owner=d;this.configChangedEvent=this.createEvent(a.CONFIG_CHANGED_EVENT);this.configChangedEvent.signature=c.LIST;this.queueInProgress=false;this.config={};this.initialConfig={};this.eventQueue=[];},checkBoolean:function(d){return(typeof d==a.BOOLEAN_TYPE);},checkNumber:function(d){return(!isNaN(d));},fireEvent:function(d,f){var e=this.config[d];if(e&&e.event){e.event.fire(f);}},addProperty:function(e,d){e=e.toLowerCase();this.config[e]=d;d.event=this.createEvent(e,{scope:this.owner});d.event.signature=c.LIST;d.key=e;if(d.handler){d.event.subscribe(d.handler,this.owner);}this.setProperty(e,d.value,true);if(!d.suppressEvent){this.queueProperty(e,d.value);}},getConfig:function(){var d={},f=this.config,g,e;for(g in f){if(b.hasOwnProperty(f,g)){e=f[g];if(e&&e.event){d[g]=e.value;}}}return d;},getProperty:function(d){var e=this.config[d.toLowerCase()];if(e&&e.event){return e.value;}else{return undefined;}},resetProperty:function(d){d=d.toLowerCase();var e=this.config[d];if(e&&e.event){if(d in this.initialConfig){this.setProperty(d,this.initialConfig[d]);return true;}}else{return false;}},setProperty:function(e,g,d){var f;e=e.toLowerCase();if(this.queueInProgress&&!d){this.queueProperty(e,g);return true;}else{f=this.config[e];if(f&&f.event){if(f.validator&&!f.validator(g)){return false;}else{f.value=g;if(!d){this.fireEvent(e,g);this.configChangedEvent.fire([e,g]);}return true;}}else{return false;}}},queueProperty:function(v,r){v=v.toLowerCase();var u=this.config[v],l=false,k,g,h,j,p,t,f,n,o,d,m,w,e;if(u&&u.event){if(!b.isUndefined(r)&&u.validator&&!u.validator(r)){return false;}else{if(!b.isUndefined(r)){u.value=r;}else{r=u.value;}l=false;k=this.eventQueue.length;for(m=0;m0){g=f-1;do{d=e.subscribers[g];if(d&&d.obj==j&&d.fn==h){return true;}}while(g--);}return false;};YAHOO.lang.augmentProto(a,YAHOO.util.EventProvider);}());(function(){YAHOO.widget.Module=function(r,q){if(r){this.init(r,q);}else{}};var f=YAHOO.util.Dom,d=YAHOO.util.Config,n=YAHOO.util.Event,m=YAHOO.util.CustomEvent,g=YAHOO.widget.Module,i=YAHOO.env.ua,h,p,o,e,a={"BEFORE_INIT":"beforeInit","INIT":"init","APPEND":"append","BEFORE_RENDER":"beforeRender","RENDER":"render","CHANGE_HEADER":"changeHeader","CHANGE_BODY":"changeBody","CHANGE_FOOTER":"changeFooter","CHANGE_CONTENT":"changeContent","DESTROY":"destroy","BEFORE_SHOW":"beforeShow","SHOW":"show","BEFORE_HIDE":"beforeHide","HIDE":"hide"},j={"VISIBLE":{key:"visible",value:true,validator:YAHOO.lang.isBoolean},"EFFECT":{key:"effect",suppressEvent:true,supercedes:["visible"]},"MONITOR_RESIZE":{key:"monitorresize",value:true},"APPEND_TO_DOCUMENT_BODY":{key:"appendtodocumentbody",value:false}};g.IMG_ROOT=null;g.IMG_ROOT_SSL=null;g.CSS_MODULE="yui-module";g.CSS_HEADER="hd";g.CSS_BODY="bd";g.CSS_FOOTER="ft";g.RESIZE_MONITOR_SECURE_URL="javascript:false;";g.RESIZE_MONITOR_BUFFER=1;g.textResizeEvent=new m("textResize");g.forceDocumentRedraw=function(){var q=document.documentElement;if(q){q.className+=" ";q.className=YAHOO.lang.trim(q.className);}};function l(){if(!h){h=document.createElement("div");h.innerHTML=('
    '+'
    ');p=h.firstChild;o=p.nextSibling;e=o.nextSibling;}return h;}function k(){if(!p){l();}return(p.cloneNode(false));}function b(){if(!o){l();}return(o.cloneNode(false));}function c(){if(!e){l();}return(e.cloneNode(false));}g.prototype={constructor:g,element:null,header:null,body:null,footer:null,id:null,imageRoot:g.IMG_ROOT,initEvents:function(){var q=m.LIST; -this.beforeInitEvent=this.createEvent(a.BEFORE_INIT);this.beforeInitEvent.signature=q;this.initEvent=this.createEvent(a.INIT);this.initEvent.signature=q;this.appendEvent=this.createEvent(a.APPEND);this.appendEvent.signature=q;this.beforeRenderEvent=this.createEvent(a.BEFORE_RENDER);this.beforeRenderEvent.signature=q;this.renderEvent=this.createEvent(a.RENDER);this.renderEvent.signature=q;this.changeHeaderEvent=this.createEvent(a.CHANGE_HEADER);this.changeHeaderEvent.signature=q;this.changeBodyEvent=this.createEvent(a.CHANGE_BODY);this.changeBodyEvent.signature=q;this.changeFooterEvent=this.createEvent(a.CHANGE_FOOTER);this.changeFooterEvent.signature=q;this.changeContentEvent=this.createEvent(a.CHANGE_CONTENT);this.changeContentEvent.signature=q;this.destroyEvent=this.createEvent(a.DESTROY);this.destroyEvent.signature=q;this.beforeShowEvent=this.createEvent(a.BEFORE_SHOW);this.beforeShowEvent.signature=q;this.showEvent=this.createEvent(a.SHOW);this.showEvent.signature=q;this.beforeHideEvent=this.createEvent(a.BEFORE_HIDE);this.beforeHideEvent.signature=q;this.hideEvent=this.createEvent(a.HIDE);this.hideEvent.signature=q;},platform:function(){var q=navigator.userAgent.toLowerCase();if(q.indexOf("windows")!=-1||q.indexOf("win32")!=-1){return"windows";}else{if(q.indexOf("macintosh")!=-1){return"mac";}else{return false;}}}(),browser:function(){var q=navigator.userAgent.toLowerCase();if(q.indexOf("opera")!=-1){return"opera";}else{if(q.indexOf("msie 7")!=-1){return"ie7";}else{if(q.indexOf("msie")!=-1){return"ie";}else{if(q.indexOf("safari")!=-1){return"safari";}else{if(q.indexOf("gecko")!=-1){return"gecko";}else{return false;}}}}}}(),isSecure:function(){if(window.location.href.toLowerCase().indexOf("https")===0){return true;}else{return false;}}(),initDefaultConfig:function(){this.cfg.addProperty(j.VISIBLE.key,{handler:this.configVisible,value:j.VISIBLE.value,validator:j.VISIBLE.validator});this.cfg.addProperty(j.EFFECT.key,{handler:this.configEffect,suppressEvent:j.EFFECT.suppressEvent,supercedes:j.EFFECT.supercedes});this.cfg.addProperty(j.MONITOR_RESIZE.key,{handler:this.configMonitorResize,value:j.MONITOR_RESIZE.value});this.cfg.addProperty(j.APPEND_TO_DOCUMENT_BODY.key,{value:j.APPEND_TO_DOCUMENT_BODY.value});},init:function(v,u){var s,w;this.initEvents();this.beforeInitEvent.fire(g);this.cfg=new d(this);if(this.isSecure){this.imageRoot=g.IMG_ROOT_SSL;}if(typeof v=="string"){s=v;v=document.getElementById(v);if(!v){v=(l()).cloneNode(false);v.id=s;}}this.id=f.generateId(v);this.element=v;w=this.element.firstChild;if(w){var r=false,q=false,t=false;do{if(1==w.nodeType){if(!r&&f.hasClass(w,g.CSS_HEADER)){this.header=w;r=true;}else{if(!q&&f.hasClass(w,g.CSS_BODY)){this.body=w;q=true;}else{if(!t&&f.hasClass(w,g.CSS_FOOTER)){this.footer=w;t=true;}}}}}while((w=w.nextSibling));}this.initDefaultConfig();f.addClass(this.element,g.CSS_MODULE);if(u){this.cfg.applyConfig(u,true);}if(!d.alreadySubscribed(this.renderEvent,this.cfg.fireQueue,this.cfg)){this.renderEvent.subscribe(this.cfg.fireQueue,this.cfg,true);}this.initEvent.fire(g);},initResizeMonitor:function(){var r=(i.gecko&&this.platform=="windows");if(r){var q=this;setTimeout(function(){q._initResizeMonitor();},0);}else{this._initResizeMonitor();}},_initResizeMonitor:function(){var q,s,u;function w(){g.textResizeEvent.fire();}if(!i.opera){s=f.get("_yuiResizeMonitor");var v=this._supportsCWResize();if(!s){s=document.createElement("iframe");if(this.isSecure&&g.RESIZE_MONITOR_SECURE_URL&&i.ie){s.src=g.RESIZE_MONITOR_SECURE_URL;}if(!v){u=[" - - - - - - - - - -
    {title}
    - -
    - -
    - - - - - - - - - - - -
    -

    Class Coverage Distribution

    -
    -
    -

    Class Complexity

    -
    -
    -

    Top Project Risks

    -
      -{top_project_risks} -
    -
    -

    Least Tested Methods

    -
      -{least_tested_methods} -
    -
    -
    - -
    - - - - -
    Generated by PHP_CodeCoverage {version} using PHP {php_version}{generator} at {date}.
    - -
    - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist deleted file mode 100644 index e1131c3..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - {title} - - - - - - - - - - - - - - -
    {title}
    - - - - - - - - - -
    Current directory:{link} (dashboard)
    Legend: - - Low: 0% to {low_upper_bound}% - - - Medium: {low_upper_bound}% to {high_lower_bound}% - - - High: {high_lower_bound}% to 100% - -
    -
    - -
    - -
    - - - - - - - - - - - -{items} -
     Coverage
     LinesFunctions / MethodsClasses
    -
    - -
    - - - - -
    Generated by PHP_CodeCoverage {version} using PHP {php_version}{generator} at {date}.
    - -
    - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.png b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.png deleted file mode 100644 index 65bd0bbdcb9005cb8929f06e25d9cb15a926366a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmV-L0=oT)P)2|yPkE-3> z-8b(3_?ov1cYiV%432IDm|3sa>)kUm%nWx2;PmwLe!t&8>~uQMm(4k6LI`Cz9Dc0p zx&Tx;XIE7wlL@7i6(oef_V#uMc)NrGOsCVTl=7;s>w_zRjH+U0Ymj!k-P+vTq}6H> zV^0g%)=c>R8-N-3GD0!|F@>GqJ z%4)bdf_Rm4wwyD#6GYg!0ieZcvQf+lK>!v2)x`$$R0x3iqPe(Z=9oKK7jS;E^w*b55oWe`mg~7=)i^mlj0C%nT8s$wuo= zb!&(s!bMVmQn@?FCx!@o{yMsKc&XWJj=)i68(aN%$9JEC^W*#Yp8+C_MZ$~UM;0NT T9Al?300000NkvXXu0mjfM@0T3 diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist deleted file mode 100644 index 17e89f3..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist +++ /dev/null @@ -1,25 +0,0 @@ - - {icon}{name} - -
    -
    -
    - - {lines_executed_percent} - {num_executed_lines} / {num_executable_lines} - -
    -
    -
    - - {methods_tested_percent} - {methods_number} - -
    -
    -
    - - {classes_tested_percent} - {classes_number} - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist deleted file mode 100644 index 97b61a5..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - {title} - - - - - - - - - - - - - - - - - - -
    {title}
    - - - - - - - - - -
    Current file:{link}
    Legend: - executed - not executed - dead code -
    -
    - -
    - -
    - - - - - - - - - - - -{items} -
     Coverage
     ClassesFunctions / MethodsLines
    -
    - -
    - - - - - - - - -

    -
    -{source}
    -
    -
    - - - - -
    Generated by PHP_CodeCoverage {version} using PHP {php_version}{generator} at {date}.
    - -
    - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.png b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.png deleted file mode 100644 index 2d7f2d6017d823bf9f1209d9933faf612dffe9f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP$ic-+2*wv2(<2J_t+h+ zs5rlI{^p#SO2-|aiODDi-jZP}W|aE1)~BmOR3$EA(Vi@w>U%ZDa$9qM8}c0HKK>=@ z`d4d)YqwsmShMx=n<-}wTJ%-CXPi)?Z+d)E$Kx3$zTq0>%B>G-<`ESK<06 zKLv;!Rde(>`RU=L2g~Ovo%n1M@bQ?*+>S*Vvl$k=|9v$za@qmb9gNTaiaD`NnxMxo zp5*#q&TW}{<`>WDw{ULpSLj^#x@qe3m+d`GEQ*uw+Md|dvtPsTSdE!)vF)Ukp32Aj azp#b`#_#;I)BX+6mkge+elF{r5}E*#afeO- diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist deleted file mode 100644 index 56c12e9..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist +++ /dev/null @@ -1,26 +0,0 @@ - - {name} - -
    -
    -
    - - {classes_tested_percent} - {classes_number} - -
    -
    -
    - - {methods_tested_percent} - {methods_number} - {crap} - -
    -
    -
    - - {lines_executed_percent} - {num_executed_lines} / {num_executable_lines} - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_no_yui.html.dist b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_no_yui.html.dist deleted file mode 100644 index 3003ec1..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_no_yui.html.dist +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - {title} - - - - - - - - - - - - - - - -
    {title}
    - - - - - - - - - -
    Current file:{link}
    Legend: - executed - not executed - dead code -
    -
    - -
    - -
    - - - - - - - - - - - -{items} -
     Coverage
     ClassesFunctions / MethodsLines
    -
    - -
    - - - - - - - - -

    -
    -{source}
    -
    -
    - - - - -
    Generated by PHP_CodeCoverage {version} using PHP {php_version}{generator} at {date}.
    - -
    - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/glass.png b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/glass.png deleted file mode 100644 index e1abc00680a3093c49fdb775ae6bdb6764c95af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaEa{HEjtmSN`?>!lvI6;R0X`wF z|Ns97GD8ntt^-nxB|(0{3=Yq3q=7g|-tI089jvk*Kn`btM`SSr1Gf+eGhVt|_XjA* zUgGKN%6^Gmn4d%Ph(nkFP>9RZ#WAE}PI3Z}&BVayv3^M*kj3EX>gTe~DWM4f=_Dpv diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/highcharts.js b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/highcharts.js deleted file mode 100644 index 0a9d24f..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/highcharts.js +++ /dev/null @@ -1,170 +0,0 @@ -/* - Highcharts JS v2.1.6 (2011-07-08) - - (c) 2009-2011 Torstein H?nsi - - License: www.highcharts.com/license -*/ -(function(){function pa(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function ja(a,b){return parseInt(a,b||10)}function Pb(a){return typeof a==="string"}function Lb(a){return typeof a==="object"}function dc(a){return typeof a==="number"}function qc(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}function M(a){return a!==Va&&a!==null}function Ea(a,b,c){var d,e;if(Pb(b))if(M(c))a.setAttribute(b,c);else{if(a&&a.getAttribute)e=a.getAttribute(b)}else if(M(b)&&Lb(b))for(d in b)a.setAttribute(d, -b[d]);return e}function rc(a){if(!a||a.constructor!==Array)a=[a];return a}function C(){var a=arguments,b,c,d=a.length;for(b=0;b3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+$a(a-c).toFixed(f).slice(2):"")}function Ad(){this.symbol=this.color=0}function ec(a,b){Cc=C(a,b.animation)}function Bd(){var a=Wa.global.useUTC;Dc=a?Date.UTC:function(b,c,d,e,f,g){return(new Date(b,c,C(d,1),C(e, -0),C(f,0),C(g,0))).getTime()};bd=a?"getUTCMinutes":"getMinutes";cd=a?"getUTCHours":"getHours";dd=a?"getUTCDay":"getDay";sc=a?"getUTCDate":"getDate";Ec=a?"getUTCMonth":"getMonth";Fc=a?"getUTCFullYear":"getFullYear";Cd=a?"setUTCMinutes":"setMinutes";Dd=a?"setUTCHours":"setHours";ed=a?"setUTCDate":"setDate";Ed=a?"setUTCMonth":"setMonth";Fd=a?"setUTCFullYear":"setFullYear"}function Gc(a){Hc||(Hc=ib(Qb));a&&Hc.appendChild(a);Hc.innerHTML=""}function Ic(){}function Gd(a,b){function c(m,i){function y(k, -o){this.pos=k;this.minor=o;this.isNew=true;o||this.addLabel()}function x(k){if(k){this.options=k;this.id=k.id}return this}function Q(k,o,r){this.isNegative=o;this.options=k;this.x=r;this.alignOptions={align:k.align||(qa?o?"left":"right":"center"),verticalAlign:k.verticalAlign||(qa?"middle":o?"bottom":"top"),y:C(k.y,qa?4:o?14:-6),x:C(k.x,qa?o?-6:6:0)};this.textAlign=k.textAlign||(qa?o?"right":"left":"center")}function na(){var k=[],o=[],r;T=ra=null;Fa=[];u(Ia,function(q){r=false;u(["xAxis","yAxis"], -function(ma){if(q.isCartesian&&(ma==="xAxis"&&Ga||ma==="yAxis"&&!Ga)&&(q.options[ma]===i.index||q.options[ma]===Va&&i.index===0)){q[ma]=v;Fa.push(q);r=true}});if(!q.visible&&w.ignoreHiddenSeries)r=false;if(r){var A,U,G,V,Ba;if(!Ga){A=q.options.stacking;Jc=A==="percent";if(A){V=q.type+C(q.options.stack,"");Ba="-"+V;q.stackKey=V;U=k[V]||[];k[V]=U;G=o[Ba]||[];o[Ba]=G}if(Jc){T=0;ra=99}}if(q.isCartesian){u(q.data,function(ma){var s=ma.x,W=ma.y,ba=W<0,ia=ba?G:U,zb=ba?Ba:V;if(T===null)T=ra=ma[$];if(Ga)if(s> -ra)ra=s;else{if(sra)ra=W;else if(ma=0){T=0;Hd=true}else if(ra<0){ra=0;Id=true}}}})}function O(k,o){var r,q;Fb=o?1:sa.pow(10,kb(sa.log(k)/sa.LN10));r=k/Fb;if(!o){o=[1,2,2.5,5,10];if(i.allowDecimals===false||H)if(Fb===1)o=[1,2,5,10];else if(Fb<=0.1)o=[1/Fb]}for(q= -0;q0||!Id))fa+=k*Kd}Ta=ca===fa?1:Rb&&!A&&U===r.options.tickPixelInterval?r.tickInterval:C(A,Xa?1:(fa-ca)*U/oa);if(!F&&!M(i.tickInterval))Ta=O(Ta);v.tickInterval=Ta;Kc=i.minorTickInterval==="auto"&&Ta?Ta/5:i.minorTickInterval;if(F){ta=[];A=Wa.global.useUTC;var G=1E3/rb,V=6E4/ -rb,Ba=36E5/rb;U=864E5/rb;k=6048E5/rb;q=2592E6/rb;var ma=31556952E3/rb,s=[["second",G,[1,2,5,10,15,30]],["minute",V,[1,2,5,10,15,30]],["hour",Ba,[1,2,3,4,6,8,12]],["day",U,[1,2]],["week",k,[1,2]],["month",q,[1,2,3,4,6]],["year",ma,null]],W=s[6],ba=W[1],ia=W[2];for(r=0;r=G)ia.setSeconds(ba>=V?0:s*kb(ia.getSeconds()/ -s));if(ba>=V)ia[Cd](ba>=Ba?0:s*kb(ia[bd]()/s));if(ba>=Ba)ia[Dd](ba>=U?0:s*kb(ia[cd]()/s));if(ba>=U)ia[ed](ba>=q?1:s*kb(ia[sc]()/s));if(ba>=q){ia[Ed](ba>=ma?0:s*kb(ia[Ec]()/s));o=ia[Fc]()}if(ba>=ma){o-=o%s;ia[Fd](o)}ba===k&&ia[ed](ia[sc]()-ia[dd]()+i.startOfWeek);r=1;o=ia[Fc]();G=ia.getTime()/rb;V=ia[Ec]();for(Ba=ia[sc]();Go&&ta.shift();if(i.endOnTick)fa=r;else faMb[$])Mb[$]=ta.length}}function Aa(){var k,o;Gb=ca;Ld=fa;na();Ma();fb=ua;ua=oa/(fa-ca||1);if(!Ga)for(k in t)for(o in t[k])t[k][o].cum=t[k][o].total;if(!v.isDirty)v.isDirty= -ca!==Gb||fa!==Ld}function Qa(k){k=(new x(k)).render();Sb.push(k);return k}function Ra(){var k=i.title,o=i.stackLabels,r=i.alternateGridColor,q=i.lineWidth,A,U,G=m.hasRendered,V=G&&M(Gb)&&!isNaN(Gb);A=Fa.length&&M(ca)&&M(fa);oa=z?Ca:xa;ua=oa/(fa-ca||1);eb=z?Y:sb;if(A||Rb){if(Kc&&!Xa)for(A=ca+(ta[0]-ca)%Kc;A<=fa;A+=Kc){Zb[A]||(Zb[A]=new y(A,true));V&&Zb[A].isNew&&Zb[A].render(null,true);Zb[A].isActive=true;Zb[A].render()}u(ta,function(s,W){if(!Rb||s>=ca&&s<=fa){V&&tb[s].isNew&&tb[s].render(W,true); -tb[s].isActive=true;tb[s].render(W)}});r&&u(ta,function(s,W){if(W%2===0&&s=1E3?zd(k,0):k},Oc=z&&i.labels.staggerLines,$b=i.reversed,ac=Xa&&i.tickmarkPlacement==="between"?0.5:0;y.prototype={addLabel:function(){var k=this.pos,o=i.labels,r=!(k===ca&&!C(i.showFirstLabel,1)||k===fa&&!C(i.showLastLabel,0)),q=Xa&&z&&Xa.length&&!o.step&&!o.staggerLines&&!o.rotation&&Ca/Xa.length||!z&&Ca/2,A=this.label;k=$d.call({isFirst:k===ta[0],isLast:k===ta[ta.length-1],dateTimeLabelFormat:Lc,value:Xa&&Xa[k]?Xa[k]: -k});q=q&&{width:Ha(1,X(q-2*(o.padding||10)))+bb};q=pa(q,o.style);if(A===Va)this.label=M(k)&&r&&o.enabled?ga.text(k,0,0).attr({align:o.align,rotation:o.rotation}).css(q).add(gc):null;else A&&A.attr({text:k}).css(q)},getLabelSize:function(){var k=this.label;return k?(this.labelBBox=k.getBBox())[z?"height":"width"]:0},render:function(k,o){var r=!this.minor,q=this.label,A=this.pos,U=i.labels,G=this.gridLine,V=r?i.gridLineWidth:i.minorGridLineWidth,Ba=r?i.gridLineColor:i.minorGridLineColor,ma=r?i.gridLineDashStyle: -i.minorGridLineDashStyle,s=this.mark,W=r?i.tickLength:i.minorTickLength,ba=r?i.tickWidth:i.minorTickWidth||0,ia=r?i.tickColor:i.minorTickColor,zb=r?i.tickPosition:i.minorTickPosition;r=U.step;var lb=o&&Pc||Ua,Nb;Nb=z?Ib(A+ac,null,null,o)+eb:Y+P+(Ka?(o&&jd||Ya)-Hb-Y:0);lb=z?lb-sb+P-(Ka?xa:0):lb-Ib(A+ac,null,null,o)-eb;if(V){A=Tb(A+ac,V,o);if(G===Va){G={stroke:Ba,"stroke-width":V};if(ma)G.dashstyle=ma;this.gridLine=G=V?ga.path(A).attr(G).add(L):null}G&&A&&G.animate({d:A})}if(ba){if(zb==="inside")W= --W;if(Ka)W=-W;V=ga.crispLine([ab,Nb,lb,La,Nb+(z?0:-W),lb+(z?W:0)],ba);if(s)s.animate({d:V});else this.mark=ga.path(V).attr({stroke:ia,"stroke-width":ba}).add(gc)}if(q&&!isNaN(Nb)){Nb=Nb+U.x-(ac&&z?ac*ua*($b?-1:1):0);lb=lb+U.y-(ac&&!z?ac*ua*($b?1:-1):0);M(U.y)||(lb+=ja(q.styles.lineHeight)*0.9-q.getBBox().height/2);if(Oc)lb+=k/(r||1)%Oc*16;if(r)q[k%r?"hide":"show"]();q[this.isNew?"attr":"animate"]({x:Nb,y:lb})}this.isNew=false},destroy:function(){for(var k in this)this[k]&&this[k].destroy&&this[k].destroy()}}; -x.prototype={render:function(){var k=this,o=k.options,r=o.label,q=k.label,A=o.width,U=o.to,G,V=o.from,Ba=o.dashStyle,ma=k.svgElem,s=[],W,ba,ia=o.color;ba=o.zIndex;var zb=o.events;if(A){s=Tb(o.value,A);o={stroke:ia,"stroke-width":A};if(Ba)o.dashstyle=Ba}else if(M(V)&&M(U)){V=Ha(V,ca);U=qb(U,fa);G=Tb(U);if((s=Tb(V))&&G)s.push(G[4],G[5],G[1],G[2]);else s=null;o={fill:ia}}else return;if(M(ba))o.zIndex=ba;if(ma)if(s)ma.animate({d:s},null,ma.onGetPath);else{ma.hide();ma.onGetPath=function(){ma.show()}}else if(s&& -s.length){k.svgElem=ma=ga.path(s).attr(o).add();if(zb){Ba=function(lb){ma.on(lb,function(Nb){zb[lb].apply(k,[Nb])})};for(W in zb)Ba(W)}}if(r&&M(r.text)&&s&&s.length&&Ca>0&&xa>0){r=va({align:z&&G&&"center",x:z?!G&&4:10,verticalAlign:!z&&G&&"middle",y:z?G?16:10:G?6:-4,rotation:z&&!G&&90},r);if(!q)k.label=q=ga.text(r.text,0,0).attr({align:r.textAlign||r.align,rotation:r.rotation,zIndex:ba}).css(r.style).add();G=[s[1],s[4],C(s[6],s[1])];s=[s[2],s[5],C(s[7],s[2])];W=qb.apply(sa,G);ba=qb.apply(sa,s);q.align(r, -false,{x:W,y:ba,width:Ha.apply(sa,G)-W,height:Ha.apply(sa,s)-ba});q.show()}else q&&q.hide();return k},destroy:function(){for(var k in this){this[k]&&this[k].destroy&&this[k].destroy();delete this[k]}qc(Sb,this)}};Q.prototype={setTotal:function(k){this.cum=this.total=k},render:function(k){var o=this.options.formatter.call(this);if(this.label)this.label.attr({text:o,visibility:ub});else this.label=m.renderer.text(o,0,0).css(this.options.style).attr({align:this.textAlign,rotation:this.options.rotation, -visibility:ub}).add(k)},setOffset:function(k,o){var r=this.isNegative,q=v.translate(this.total),A=v.translate(0);A=$a(q-A);var U=m.xAxis[0].translate(this.x)+k,G=m.plotHeight;r={x:qa?r?q:q-A:U,y:qa?G-U-o:r?G-q-A:G-q,width:qa?A:o,height:qa?o:A};this.label&&this.label.align(this.alignOptions,null,r).attr({visibility:Ab})}};Ib=function(k,o,r,q,A){var U=1,G=0,V=q?fb:ua;q=q?Gb:ca;V||(V=ua);if(r){U*=-1;G=oa}if($b){U*=-1;G-=U*oa}if(o){if($b)k=oa-k;k=k/V+q;if(H&&A)k=sa.pow(10,k)}else{if(H&&A)k=sa.log(k)/ -sa.LN10;k=U*(k-q)*V+G}return k};Tb=function(k,o,r){var q,A,U;k=Ib(k,null,null,r);var G=r&&Pc||Ua,V=r&&jd||Ya,Ba;r=A=X(k+eb);q=U=X(G-k-eb);if(isNaN(k))Ba=true;else if(z){q=ha;U=G-sb;if(rY+Ca)Ba=true}else{r=Y;A=V-Hb;if(qha+xa)Ba=true}return Ba?null:ga.crispLine([ab,r,q,La,A,U],o||0)};if(qa&&Ga&&$b===Va)$b=true;pa(v,{addPlotBand:Qa,addPlotLine:Qa,adjustTickAmount:function(){if(Mb&&!F&&!Xa&&!Rb){var k=hc,o=ta.length;hc=Mb[$];if(ok)k=ca;else if(fa'+(H? -Nc("%A, %b %e, %Y",P):P)+""]:[];u(F,function(ua){oa.push(ua.point.tooltipFormatter($))});return oa.join("
    ")}function y(F,H){z=Za?F:(2*z+F)/3;Z=Za?H:(Z+H)/2;t.translate(z,Z);kd=$a(F-z)>1||$a(H-Z)>1?function(){y(F,H)}:null}function x(){if(!Za){var F=p.hoverPoints;t.hide();u(ea,function(H){H&&H.hide()});F&&u(F,function(H){H.setState()});p.hoverPoints=null;Za=true}}var Q,na=m.borderWidth,O=m.crosshairs,ea=[],Ma=m.style,Aa=m.shared,Qa=ja(Ma.padding),Ra=na+Qa,Za=true,Ga,Ka,z=0,Z=0;Ma.padding= -0;var t=ga.g("tooltip").attr({zIndex:8}).add(),v=ga.rect(Ra,Ra,0,0,m.borderRadius,na).attr({fill:m.backgroundColor,"stroke-width":na}).add(t).shadow(m.shadow),N=ga.text("",Qa+Ra,ja(Ma.fontSize)+Qa+Ra).attr({zIndex:1}).css(Ma).add(t);t.hide();return{shared:Aa,refresh:function(F){var H,P,$,oa=0,ua={},fb=[];$=F.tooltipPos;H=m.formatter||i;ua=p.hoverPoints;if(Aa){ua&&u(ua,function(eb){eb.setState()});p.hoverPoints=F;u(F,function(eb){eb.setState(Bb);oa+=eb.plotY;fb.push(eb.getLabelConfig())});P=F[0].plotX; -oa=X(oa)/F.length;ua={x:F[0].category};ua.points=fb;F=F[0]}else ua=F.getLabelConfig();ua=H.call(ua);Q=F.series;P=Aa?P:F.plotX;oa=Aa?oa:F.plotY;H=X($?$[0]:qa?Ca-oa:P);P=X($?$[1]:qa?xa-P:oa);$=Aa||!F.series.isCartesian||kc(H,P);if(ua===false||!$)x();else{if(Za){t.show();Za=false}N.attr({text:ua});$=N.getBBox();Ga=$.width+2*Qa;Ka=$.height+2*Qa;v.attr({width:Ga,height:Ka,stroke:m.borderColor||F.color||Q.color||"#606060"});$=H-Ga+Y-25;P=P-Ka+ha+10;if($<7)$=Y+H+15;if(P<5)P=5;else if(P+Ka>Ua)P=Ua-Ka-5;y(X($- -Ra),X(P-Ra))}if(O){O=rc(O);for(H=O.length;H--;){P=F.series[H?"yAxis":"xAxis"];if(O[H]&&P){P=P.getPlotLinePath(F[H?"y":"x"],1);if(ea[H])ea[H].attr({d:P,visibility:Ab});else{$={"stroke-width":O[H].width||1,stroke:O[H].color||"#C0C0C0",zIndex:2};if(O[H].dashStyle)$.dashstyle=O[H].dashStyle;ea[H]=ga.path(P).attr($).add()}}}}},hide:x}}function f(m,i){function y(z){var Z,t=Nd&&wa.width/wa.documentElement.clientWidth-1,v,N,F;z=z||cb.event;if(!z.target)z.target=z.srcElement;Z=z.touches?z.touches.item(0): -z;if(z.type!=="mousemove"||cb.opera||t){v=ya;N={left:v.offsetLeft,top:v.offsetTop};for(v=v.offsetParent;v;){N.left+=v.offsetLeft;N.top+=v.offsetTop;if(v!==wa.body&&v!==wa.documentElement){N.left-=v.scrollLeft;N.top-=v.scrollTop}v=v.offsetParent}tc=N;v=tc.left;N=tc.top}if(Bc){F=z.x;Z=z.y}else if(Z.layerX===Va){F=Z.pageX-v;Z=Z.pageY-N}else{F=z.layerX;Z=z.layerY}if(t){F+=X((t+1)*v-v);Z+=X((t+1)*N-N)}return pa(z,{chartX:F,chartY:Z})}function x(z){var Z={xAxis:[],yAxis:[]};u(db,function(t){var v=t.translate, -N=t.isXAxis;Z[N?"xAxis":"yAxis"].push({axis:t,value:v((qa?!N:N)?z.chartX-Y:xa-z.chartY+ha,true)})});return Z}function Q(){var z=m.hoverSeries,Z=m.hoverPoint;Z&&Z.onMouseOut();z&&z.onMouseOut();uc&&uc.hide();ld=null}function na(){if(Aa){var z={xAxis:[],yAxis:[]},Z=Aa.getBBox(),t=Z.x-Y,v=Z.y-ha;if(Ma){u(db,function(N){var F=N.translate,H=N.isXAxis,P=qa?!H:H,$=F(P?t:xa-v-Z.height,true,0,0,1);F=F(P?t+Z.width:xa-v,true,0,0,1);z[H?"xAxis":"yAxis"].push({axis:N,min:qb($,F),max:Ha($,F)})});Pa(m,"selection", -z,md)}Aa=Aa.destroy()}m.mouseIsDown=nd=Ma=false;Cb(wa,Jb?"touchend":"mouseup",na)}var O,ea,Ma,Aa,Qa=w.zoomType,Ra=/x/.test(Qa),Za=/y/.test(Qa),Ga=Ra&&!qa||Za&&qa,Ka=Za&&!qa||Ra&&qa;Qc=function(){if(Rc){Rc.translate(Y,ha);qa&&Rc.attr({width:m.plotWidth,height:m.plotHeight}).invert()}else m.trackerGroup=Rc=ga.g("tracker").attr({zIndex:9}).add()};Qc();if(i.enabled)m.tooltip=uc=e(i);(function(){var z=true;ya.onmousedown=function(t){t=y(t);!Jb&&t.preventDefault&&t.preventDefault();m.mouseIsDown=nd=true; -O=t.chartX;ea=t.chartY;Sa(wa,Jb?"touchend":"mouseup",na)};var Z=function(t){if(!(t&&t.touches&&t.touches.length>1)){t=y(t);if(!Jb)t.returnValue=false;var v=t.chartX,N=t.chartY,F=!kc(v-Y,N-ha);if(Jb&&t.type==="touchstart")if(Ea(t.target,"isTracker"))m.runTrackerClick||t.preventDefault();else!ae&&!F&&t.preventDefault();if(F){z||Q();if(vY+Ca)v=Y+Ca;if(Nha+xa)N=ha+xa}if(nd&&t.type!=="touchstart"){Ma=Math.sqrt(Math.pow(O-v,2)+Math.pow(ea-N,2));if(Ma>10){if(lc&&(Ra|| -Za)&&kc(O-Y,ea-ha))Aa||(Aa=ga.rect(Y,ha,Ga?1:Ca,Ka?1:xa,0).attr({fill:"rgba(69,114,167,0.25)",zIndex:7}).add());if(Aa&&Ga){v=v-O;Aa.attr({width:$a(v),x:(v>0?0:v)+O})}if(Aa&&Ka){N=N-ea;Aa.attr({height:$a(N),y:(N>0?0:N)+ea})}}}else if(!F){var H;N=m.hoverPoint;v=m.hoverSeries;var P,$,oa=Ya,ua=qa?t.chartY:t.chartX-Y;if(uc&&i.shared){H=[];P=Ia.length;for($=0;$ -oa&&H.splice(P,1);if(H.length&&H[0].plotX!==ld){uc.refresh(H);ld=H[0].plotX}}if(v&&v.tracker)(t=v.tooltipPoints[ua])&&t!==N&&t.onMouseOver()}return(z=F)||!lc}};ya.onmousemove=Z;Sa(ya,"mouseleave",Q);ya.ontouchstart=function(t){if(Ra||Za)ya.onmousedown(t);Z(t)};ya.ontouchmove=Z;ya.ontouchend=function(){Ma&&Q()};ya.onclick=function(t){var v=m.hoverPoint;t=y(t);t.cancelBubble=true;if(!Ma)if(v&&Ea(t.target,"isTracker")){var N=v.plotX,F=v.plotY;pa(v,{pageX:tc.left+Y+(qa?Ca-F:N),pageY:tc.top+ha+(qa?xa- -N:F)});Pa(v.series,"click",pa(t,{point:v}));v.firePointEvent("click",t)}else{pa(t,x(t));kc(t.chartX-Y,t.chartY-ha)&&Pa(m,"click",t)}Ma=false}})();Od=setInterval(function(){kd&&kd()},32);pa(this,{zoomX:Ra,zoomY:Za,resetTracker:Q})}function g(m){var i=m.type||w.type||w.defaultSeriesType,y=vb[i],x=p.hasRendered;if(x)if(qa&&i==="column")y=vb.bar;else if(!qa&&i==="bar")y=vb.column;i=new y;i.init(p,m);if(!x&&i.inverted)qa=true;if(i.isCartesian)lc=i.isCartesian;Ia.push(i);return i}function h(){w.alignTicks!== -false&&u(db,function(m){m.adjustTickAmount()});Mb=null}function j(m){var i=p.isDirtyLegend,y,x=p.isDirtyBox,Q=Ia.length,na=Q,O=p.clipRect;for(ec(m,p);na--;){m=Ia[na];if(m.isDirty&&m.options.stacking){y=true;break}}if(y)for(na=Q;na--;){m=Ia[na];if(m.options.stacking)m.isDirty=true}u(Ia,function(ea){if(ea.isDirty){ea.cleanData();ea.getSegments();if(ea.options.legendType==="point")i=true}});if(i&&od.renderLegend){od.renderLegend();p.isDirtyLegend=false}if(lc){if(!Sc){Mb=null;u(db,function(ea){ea.setScale()})}h(); -vc();u(db,function(ea){if(ea.isDirty||x){ea.redraw();x=true}})}if(x){pd();Qc();if(O){Tc(O);O.animate({width:p.plotSizeX,height:p.plotSizeY})}}u(Ia,function(ea){if(ea.isDirty&&ea.visible&&(!ea.isCartesian||ea.xAxis))ea.redraw()});jc&&jc.resetTracker&&jc.resetTracker();Pa(p,"redraw")}function l(){var m=a.xAxis||{},i=a.yAxis||{},y;m=rc(m);u(m,function(x,Q){x.index=Q;x.isX=true});i=rc(i);u(i,function(x,Q){x.index=Q});db=m.concat(i);p.xAxis=[];p.yAxis=[];db=mc(db,function(x){y=new c(p,x);p[y.isXAxis?"xAxis": -"yAxis"].push(y);return y});h()}function n(m,i){Kb=va(a.title,m);wc=va(a.subtitle,i);u([["title",m,Kb],["subtitle",i,wc]],function(y){var x=y[0],Q=p[x],na=y[1];y=y[2];if(Q&&na){Q.destroy();Q=null}if(y&&y.text&&!Q)p[x]=ga.text(y.text,0,0).attr({align:y.align,"class":"highcharts-"+x,zIndex:1}).css(y.style).add().align(y,false,Ob)})}function J(){mb=w.renderTo;Pd=nc+qd++;if(Pb(mb))mb=wa.getElementById(mb);mb.innerHTML="";if(!mb.offsetWidth){Vb=mb.cloneNode(0);Na(Vb,{position:oc,top:"-9999px",display:""}); -wa.body.appendChild(Vb)}Uc=(Vb||mb).offsetWidth;xc=(Vb||mb).offsetHeight;p.chartWidth=Ya=w.width||Uc||600;p.chartHeight=Ua=w.height||(xc>19?xc:400);p.container=ya=ib(Qb,{className:"highcharts-container"+(w.className?" "+w.className:""),id:Pd},pa({position:Qd,overflow:ub,width:Ya+bb,height:Ua+bb,textAlign:"left"},w.style),Vb||mb);p.renderer=ga=w.forExport?new Vc(ya,Ya,Ua,true):new Wc(ya,Ya,Ua);var m,i;if(Rd&&ya.getBoundingClientRect){m=function(){Na(ya,{left:0,top:0});i=ya.getBoundingClientRect(); -Na(ya,{left:-(i.left-ja(i.left))+bb,top:-(i.top-ja(i.top))+bb})};m();Sa(cb,"resize",m);Sa(p,"destroy",function(){Cb(cb,"resize",m)})}}function D(){function m(){var y=w.width||mb.offsetWidth,x=w.height||mb.offsetHeight;if(y&&x){if(y!==Uc||x!==xc){clearTimeout(i);i=setTimeout(function(){rd(y,x,false)},100)}Uc=y;xc=x}}var i;Sa(cb,"resize",m);Sa(p,"destroy",function(){Cb(cb,"resize",m)})}function aa(){var m=a.labels,i=a.credits,y;n();od=p.legend=new be(p);vc();u(db,function(x){x.setTickPositions(true)}); -h();vc();pd();lc&&u(db,function(x){x.render()});if(!p.seriesGroup)p.seriesGroup=ga.g("series-group").attr({zIndex:3}).add();u(Ia,function(x){x.translate();x.setTooltipPoints();x.render()});m.items&&u(m.items,function(){var x=pa(m.style,this.style),Q=ja(x.left)+Y,na=ja(x.top)+ha+12;delete x.left;delete x.top;ga.text(this.html,Q,na).attr({zIndex:2}).css(x).add()});if(!p.toolbar)p.toolbar=d(p);if(i.enabled&&!p.credits){y=i.href;ga.text(i.text,0,0).on("click",function(){if(y)location.href=y}).attr({align:i.position.align, -zIndex:8}).css(i.style).add().align(i.position)}Qc();p.hasRendered=true;if(Vb){mb.appendChild(ya);Gc(Vb)}}function E(){var m=Ia.length,i=ya&&ya.parentNode;Pa(p,"destroy");Cb(cb,"unload",E);Cb(p);for(u(db,function(y){Cb(y)});m--;)Ia[m].destroy();if(ya){ya.innerHTML="";Cb(ya);i&&i.removeChild(ya);ya=null}if(ga)ga.alignedObjects=null;clearInterval(Od);for(m in p)delete p[m]}function da(){if(!yc&&cb==cb.top&&wa.readyState!=="complete")wa.attachEvent("onreadystatechange",function(){wa.detachEvent("onreadystatechange", -da);wa.readyState==="complete"&&da()});else{J();sd();td();u(a.series||[],function(m){g(m)});p.inverted=qa=C(qa,a.chart.inverted);l();p.render=aa;p.tracker=jc=new f(p,a.tooltip);aa();Pa(p,"load");b&&b.apply(p,[p]);u(p.callbacks,function(m){m.apply(p,[p])})}}Mc=va(Mc,Wa.xAxis);hd=va(hd,Wa.yAxis);Wa.xAxis=Wa.yAxis=null;a=va(Wa,a);var w=a.chart,R=w.margin;R=Lb(R)?R:[R,R,R,R];var B=C(w.marginTop,R[0]),K=C(w.marginRight,R[1]),S=C(w.marginBottom,R[2]),I=C(w.marginLeft,R[3]),za=w.spacingTop,Da=w.spacingRight, -gb=w.spacingBottom,wb=w.spacingLeft,Ob,Kb,wc,ha,Hb,sb,Y,Ub,mb,Vb,ya,Pd,Uc,xc,Ya,Ua,jd,Pc,Xc,ud,vd,Yc,p=this,ae=(R=w.events)&&!!R.click,wd,kc,uc,nd,bc,Sd,xd,xa,Ca,jc,Rc,Qc,od,Wb,Xb,tc,lc=w.showAxes,Sc=0,db=[],Mb,Ia=[],qa,ga,kd,Od,ld,pd,vc,sd,td,rd,md,Td,be=function(m){function i(L,ka){var T=L.legendItem,ra=L.legendLine,Fa=L.legendSymbol,Ja=Ka.color,Oa=ka?O.itemStyle.color:Ja,fa=ka?L.color:Ja;Ja=ka?L.pointAttr[hb]:{stroke:Ja,fill:Ja};T&&T.css({fill:Oa});ra&&ra.attr({stroke:fa});Fa&&Fa.attr(Ja)}function y(L, -ka,T){var ra=L.legendItem,Fa=L.legendLine,Ja=L.legendSymbol;L=L.checkbox;ra&&ra.attr({x:ka,y:T});Fa&&Fa.translate(ka,T-4);Ja&&Ja.attr({x:ka+Ja.xOff,y:T+Ja.yOff});if(L){L.x=ka;L.y=T}}function x(){u(Qa,function(L){var ka=L.checkbox,T=fb.alignAttr;ka&&Na(ka,{left:T.translateX+L.legendItemWidth+ka.x-40+bb,top:T.translateY+ka.y-11+bb})})}function Q(L){var ka,T,ra,Fa,Ja=L.legendItem;Fa=L.series||L;var Oa=Fa.options,fa=Oa&&Oa.borderWidth||0;if(!Ja){Fa=/^(bar|pie|area|column)$/.test(Fa.type);L.legendItem= -Ja=ga.text(O.labelFormatter.call(L),0,0).css(L.visible?Za:Ka).on("mouseover",function(){L.setState(Bb);Ja.css(Ga)}).on("mouseout",function(){Ja.css(L.visible?Za:Ka);L.setState()}).on("click",function(){var Gb=function(){L.setVisible()};L.firePointEvent?L.firePointEvent("legendItemClick",null,Gb):Pa(L,"legendItemClick",null,Gb)}).attr({zIndex:2}).add(fb);if(!Fa&&Oa&&Oa.lineWidth){var ca={"stroke-width":Oa.lineWidth,zIndex:2};if(Oa.dashStyle)ca.dashstyle=Oa.dashStyle;L.legendLine=ga.path([ab,-Ma-Aa, -0,La,-Aa,0]).attr(ca).add(fb)}if(Fa)ka=ga.rect(T=-Ma-Aa,ra=-11,Ma,12,2).attr({zIndex:3}).add(fb);else if(Oa&&Oa.marker&&Oa.marker.enabled)ka=ga.symbol(L.symbol,T=-Ma/2-Aa,ra=-4,Oa.marker.radius).attr({zIndex:3}).add(fb);if(ka){ka.xOff=T+fa%2/2;ka.yOff=ra+fa%2/2}L.legendSymbol=ka;i(L,L.visible);if(Oa&&Oa.showCheckbox){L.checkbox=ib("input",{type:"checkbox",checked:L.selected,defaultChecked:L.selected},O.itemCheckboxStyle,ya);Sa(L.checkbox,"click",function(Gb){Pa(L,"checkboxClick",{checked:Gb.target.checked}, -function(){L.select()})})}}ka=Ja.getBBox();T=L.legendItemWidth=O.itemWidth||Ma+Aa+ka.width+Z;P=ka.height;if(ea&&N-v+T>(Ib||Ya-2*z-v)){N=v;F+=P}H=F;y(L,N,F);if(ea)N+=T;else F+=P;eb=Ib||Ha(ea?N-v:T,eb)}function na(){N=v;F=t;H=eb=0;fb||(fb=ga.g("legend").attr({zIndex:7}).add());Qa=[];u(Tb,function(ra){var Fa=ra.options;if(Fa.showInLegend)Qa=Qa.concat(Fa.legendType==="point"?ra.data:ra)});Qa.sort(function(ra,Fa){return(ra.options.legendIndex||0)-(Fa.options.legendIndex||0)});gc&&Qa.reverse();u(Qa,Q); -Wb=Ib||eb;Xb=H-t+P;if(oa||ua){Wb+=2*z;Xb+=2*z;if($)Wb>0&&Xb>0&&$.animate($.crisp(null,null,null,Wb,Xb));else $=ga.rect(0,0,Wb,Xb,O.borderRadius,oa||0).attr({stroke:O.borderColor,"stroke-width":oa||0,fill:ua||jb}).add(fb).shadow(O.shadow);$[Qa.length?"show":"hide"]()}for(var L=["left","right","top","bottom"],ka,T=4;T--;){ka=L[T];if(Ra[ka]&&Ra[ka]!=="auto"){O[T<2?"align":"verticalAlign"]=ka;O[T<2?"x":"y"]=ja(Ra[ka])*(T%2?-1:1)}}fb.align(pa(O,{width:Wb,height:Xb}),true,Ob);Sc||x()}var O=m.options.legend; -if(O.enabled){var ea=O.layout==="horizontal",Ma=O.symbolWidth,Aa=O.symbolPadding,Qa,Ra=O.style,Za=O.itemStyle,Ga=O.itemHoverStyle,Ka=O.itemHiddenStyle,z=ja(Ra.padding),Z=20,t=18,v=4+z+Ma+Aa,N,F,H,P=0,$,oa=O.borderWidth,ua=O.backgroundColor,fb,eb,Ib=O.width,Tb=m.series,gc=O.reversed;na();Sa(m,"endResize",x);return{colorizeItem:i,destroyItem:function(L){var ka=L.checkbox;u(["legendItem","legendLine","legendSymbol"],function(T){L[T]&&L[T].destroy()});ka&&Gc(L.checkbox)},renderLegend:na}}};kc=function(m, -i){return m>=0&&m<=Ca&&i>=0&&i<=xa};Td=function(){Pa(p,"selection",{resetSelection:true},md);p.toolbar.remove("zoom")};md=function(m){var i=Wa.lang,y=p.pointCount<100;p.toolbar.add("zoom",i.resetZoom,i.resetZoomTitle,Td);!m||m.resetSelection?u(db,function(x){x.setExtremes(null,null,false,y)}):u(m.xAxis.concat(m.yAxis),function(x){var Q=x.axis;if(p.tracker[Q.isXAxis?"zoomX":"zoomY"])Q.setExtremes(x.min,x.max,false,y)});j()};vc=function(){var m=a.legend,i=C(m.margin,10),y=m.x,x=m.y,Q=m.align,na=m.verticalAlign, -O;sd();if((p.title||p.subtitle)&&!M(B))if(O=Ha(p.title&&!Kb.floating&&!Kb.verticalAlign&&Kb.y||0,p.subtitle&&!wc.floating&&!wc.verticalAlign&&wc.y||0))ha=Ha(ha,O+C(Kb.margin,15)+za);if(m.enabled&&!m.floating)if(Q==="right")M(K)||(Hb=Ha(Hb,Wb-y+i+Da));else if(Q==="left")M(I)||(Y=Ha(Y,Wb+y+i+wb));else if(na==="top")M(B)||(ha=Ha(ha,Xb+x+i+za));else if(na==="bottom")M(S)||(sb=Ha(sb,Xb-x+i+gb));lc&&u(db,function(ea){ea.getOffset()});M(I)||(Y+=Ub[3]);M(B)||(ha+=Ub[0]);M(S)||(sb+=Ub[2]);M(K)||(Hb+=Ub[1]); -td()};rd=function(m,i,y){var x=p.title,Q=p.subtitle;Sc+=1;ec(y,p);Pc=Ua;jd=Ya;p.chartWidth=Ya=X(m);p.chartHeight=Ua=X(i);Na(ya,{width:Ya+bb,height:Ua+bb});ga.setSize(Ya,Ua,y);Ca=Ya-Y-Hb;xa=Ua-ha-sb;Mb=null;u(db,function(na){na.isDirty=true;na.setScale()});u(Ia,function(na){na.isDirty=true});p.isDirtyLegend=true;p.isDirtyBox=true;vc();x&&x.align(null,null,Ob);Q&&Q.align(null,null,Ob);j(y);Pc=null;Pa(p,"resize");setTimeout(function(){Pa(p,"endResize",null,function(){Sc-=1})},Cc&&Cc.duration||500)}; -td=function(){p.plotLeft=Y=X(Y);p.plotTop=ha=X(ha);p.plotWidth=Ca=X(Ya-Y-Hb);p.plotHeight=xa=X(Ua-ha-sb);p.plotSizeX=qa?xa:Ca;p.plotSizeY=qa?Ca:xa;Ob={x:wb,y:za,width:Ya-wb-Da,height:Ua-za-gb}};sd=function(){ha=C(B,za);Hb=C(K,Da);sb=C(S,gb);Y=C(I,wb);Ub=[0,0,0,0]};pd=function(){var m=w.borderWidth||0,i=w.backgroundColor,y=w.plotBackgroundColor,x=w.plotBackgroundImage,Q,na={x:Y,y:ha,width:Ca,height:xa};Q=m+(w.shadow?8:0);if(m||i)if(Xc)Xc.animate(Xc.crisp(null,null,null,Ya-Q,Ua-Q));else Xc=ga.rect(Q/ -2,Q/2,Ya-Q,Ua-Q,w.borderRadius,m).attr({stroke:w.borderColor,"stroke-width":m,fill:i||jb}).add().shadow(w.shadow);if(y)if(ud)ud.animate(na);else ud=ga.rect(Y,ha,Ca,xa,0).attr({fill:y}).add().shadow(w.plotShadow);if(x)if(vd)vd.animate(na);else vd=ga.image(x,Y,ha,Ca,xa).add();if(w.plotBorderWidth)if(Yc)Yc.animate(Yc.crisp(null,Y,ha,Ca,xa));else Yc=ga.rect(Y,ha,Ca,xa,0,w.plotBorderWidth).attr({stroke:w.plotBorderColor,"stroke-width":w.plotBorderWidth,zIndex:4}).add();p.isDirtyBox=false};Sa(cb,"unload", -E);w.reflow!==false&&Sa(p,"load",D);if(R)for(wd in R)Sa(p,wd,R[wd]);p.options=a;p.series=Ia;p.addSeries=function(m,i,y){var x;if(m){ec(y,p);i=C(i,true);Pa(p,"addSeries",{options:m},function(){x=g(m);x.isDirty=true;p.isDirtyLegend=true;i&&p.redraw()})}return x};p.animation=C(w.animation,true);p.destroy=E;p.get=function(m){var i,y,x;for(i=0;i=a)this.color=0},wrapSymbol:function(a){if(this.symbol>=a)this.symbol=0}};la&&la.init&&la.init();if(!la&&cb.jQuery){var ob=jQuery;u=function(a,b){for(var c=0,d=a.length;c-1,f=e?7:3,g;b=b.split(" ");c=[].concat(c);var h,j,l=function(n){for(g=n.length;g--;)n[g]===ab&&n.splice(g+1,0,n[g+1],n[g+2],n[g+1],n[g+2])};if(e){l(b);l(c)}if(a.isArea){h=b.splice(b.length-6,6);j=c.splice(c.length-6,6)}if(d){c=[].concat(c).splice(0,f).concat(c);a.shift=false}if(b.length)for(a=c.length;b.length255)b[e]=255}}return this},setOpacity:function(d){b[3]=d;return this}}};Ic.prototype={init:function(a,b){this.element=wa.createElementNS("http://www.w3.org/2000/svg",b);this.renderer=a},animate:function(a,b,c){if(b=C(b,Cc,true)){b=va(b);if(c)b.complete=c;Zc(this,a,b)}else{this.attr(a);c&&c()}},attr:function(a,b){var c,d,e,f,g=this.element,h=g.nodeName,j= -this.renderer,l,n=this.shadows,J,D=this;if(Pb(a)&&M(b)){c=a;a={};a[c]=b}if(Pb(a)){c=a;if(h==="circle")c={x:"cx",y:"cy"}[c]||c;else if(c==="strokeWidth")c="stroke-width";D=Ea(g,c)||this[c]||0;if(c!=="d"&&c!=="visibility")D=parseFloat(D)}else for(c in a){l=false;d=a[c];if(c==="d"){if(d&&d.join)d=d.join(" ");if(/(NaN| {2}|^$)/.test(d))d="M 0 0";this.d=d}else if(c==="x"&&h==="text"){for(e=0;eg||!M(g)&&M(b))){d.insertBefore(f,a);return this}}d.appendChild(f);this.added=true;return this},destroy:function(){var a=this.element||{},b=this.shadows,c=a.parentNode,d;a.onclick=a.onmouseout=a.onmouseover=a.onmousemove=null;Tc(this);c&&c.removeChild(a);b&&u(b,function(e){(c=e.parentNode)&&c.removeChild(e)});qc(this.renderer.alignedObjects,this);for(d in this)delete this[d];return null},empty:function(){for(var a=this.element,b=a.childNodes, -c=b.length;c--;)a.removeChild(b[c])},shadow:function(a,b){var c=[],d,e,f=this.element,g=this.parentInverted?"(-1,-1)":"(1,1)";if(a){for(d=1;d<=3;d++){e=f.cloneNode(0);Ea(e,{isShadow:"true",stroke:"rgb(0, 0, 0)","stroke-opacity":0.05*d,"stroke-width":7-2*d,transform:"translate"+g,fill:jb});b?b.element.appendChild(e):f.parentNode.insertBefore(e,f);c.push(e)}this.shadows=c}return this}};var Vc=function(){this.init.apply(this,arguments)};Vc.prototype={Element:Ic,init:function(a,b,c,d){var e=location, -f;f=this.createElement("svg").attr({xmlns:"http://www.w3.org/2000/svg",version:"1.1"});a.appendChild(f.element);this.box=f.element;this.boxWrapper=f;this.alignedObjects=[];this.url=Bc?"":e.href.replace(/#.*?$/,"");this.defs=this.createElement("defs").add();this.forExport=d;this.setSize(b,c,false)},createElement:function(a){var b=new this.Element;b.init(this,a);return b},buildText:function(a){for(var b=a.element,c=C(a.textStr,"").toString().replace(/<(b|strong)>/g,'').replace(/<(i|em)>/g, -'').replace(//g,"").split(//g),d=b.childNodes,e=/style="([^"]+)"/,f=/href="([^"]+)"/,g=Ea(b,"x"),h=a.styles,j=Rd&&h&&h.HcDirection==="rtl"&&!this.forExport&&ja(pc.split("Firefox/")[1])<4,l,n=h&&ja(h.width),J=h&&h.lineHeight,D,aa=d.length;aa--;)b.removeChild(d[aa]);n&&!a.added&&this.box.appendChild(b);u(c,function(E,da){var w,R=0,B;E=E.replace(//g,"|||");w=E.split("|||"); -u(w,function(K){if(K!==""||w.length===1){var S={},I=wa.createElementNS("http://www.w3.org/2000/svg","tspan");e.test(K)&&Ea(I,"style",K.match(e)[1].replace(/(;| |^)color([ :])/,"$1fill$2"));if(f.test(K)){Ea(I,"onclick",'location.href="'+K.match(f)[1]+'"');Na(I,{cursor:"pointer"})}K=(K.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"<").replace(/>/g,">");if(j){l=[];for(aa=K.length;aa--;)l.push(K.charAt(aa));K=l.join("")}I.appendChild(wa.createTextNode(K));if(R)S.dx=3;else S.x=g;if(!R){if(da){!yc&& -a.renderer.forExport&&Na(I,{display:"block"});B=cb.getComputedStyle&&ja(cb.getComputedStyle(D,null).getPropertyValue("line-height"));if(!B||isNaN(B))B=J||D.offsetHeight||18;Ea(I,"dy",B)}D=I}Ea(I,S);b.appendChild(I);R++;if(n){K=K.replace(/-/g,"- ").split(" ");for(var za,Da=[];K.length||Da.length;){za=b.getBBox().width;S=za>n;if(!S||K.length===1){K=Da;Da=[];if(K.length){I=wa.createElementNS("http://www.w3.org/2000/svg","tspan");Ea(I,{dy:J||16,x:g});b.appendChild(I);if(za>n)n=za}}else{I.removeChild(I.firstChild); -Da.unshift(K.pop())}K.length&&I.appendChild(wa.createTextNode(K.join(" ").replace(/- /g,"-")))}}}})})},crispLine:function(a,b){if(a[1]===a[4])a[1]=a[4]=X(a[1])+b%2/2;if(a[2]===a[5])a[2]=a[5]=X(a[2])+b%2/2;return a},path:function(a){return this.createElement("path").attr({d:a,fill:jb})},circle:function(a,b,c){a=Lb(a)?a:{x:a,y:b,r:c};return this.createElement("circle").attr(a)},arc:function(a,b,c,d,e,f){if(Lb(a)){b=a.y;c=a.r;d=a.innerR;e=a.start;f=a.end;a=a.x}return this.symbol("arc",a||0,b||0,c||0, -{innerR:d||0,start:e||0,end:f||0})},rect:function(a,b,c,d,e,f){if(Lb(a)){b=a.y;c=a.width;d=a.height;e=a.r;f=a.strokeWidth;a=a.x}e=this.createElement("rect").attr({rx:e,ry:e,fill:jb});return e.attr(e.crisp(f,a,b,Ha(c,0),Ha(d,0)))},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[C(c,true)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){return this.createElement("g").attr(M(a)&&{"class":nc+a})},image:function(a,b,c,d, -e){var f={preserveAspectRatio:jb};arguments.length>1&&pa(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e){var f,g=this.symbols[a];g=g&&g(X(b),X(c),d,e);var h=/^url\((.*?)\)$/,j;if(g){f=this.path(g);pa(f,{symbolName:a,x:b,y:c,r:d});e&&pa(f,e)}else if(h.test(a)){var l=function(n,J){n.attr({width:J[0],height:J[1]}).translate(-X(J[0]/ -2),-X(J[1]/2))};j=a.match(h)[1];a=Vd[j];f=this.image(j).attr({x:b,y:c});if(a)l(f,a);else{f.attr({width:0,height:0});ib("img",{onload:function(){l(f,Vd[j]=[this.width,this.height])},src:j})}}else f=this.circle(b,c,d);return f},symbols:{square:function(a,b,c){c=0.707*c;return[ab,a-c,b-c,La,a+c,b-c,a+c,b+c,a-c,b+c,"Z"]},triangle:function(a,b,c){return[ab,a,b-1.33*c,La,a+c,b+0.67*c,a-c,b+0.67*c,"Z"]},"triangle-down":function(a,b,c){return[ab,a,b+1.33*c,La,a-c,b-0.67*c,a+c,b-0.67*c,"Z"]},diamond:function(a, -b,c){return[ab,a,b-c,La,a+c,b,a,b+c,a-c,b,"Z"]},arc:function(a,b,c,d){var e=d.start,f=d.end-1.0E-6,g=d.innerR,h=nb(e),j=Db(e),l=nb(f);f=Db(f);d=d.end-e');if(b){c=b===Qb||b==="span"||b==="img"?c.join(""):a.prepVML(c);this.element=ib(c)}this.renderer=a},add:function(a){var b= -this.renderer,c=this.element,d=b.box;d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);zc&&d.gVis===ub&&Na(c,{visibility:ub});d.appendChild(c);this.added=true;this.alignOnAdd&&this.updateTransform();return this},attr:function(a,b){var c,d,e,f=this.element||{},g=f.style,h=f.nodeName,j=this.renderer,l=this.symbolName,n,J,D=this.shadows,aa=this;if(Pb(a)&&M(b)){c=a;a={};a[c]=b}if(Pb(a)){c=a;aa=c==="strokeWidth"||c==="stroke-width"?this.strokeweight:this[c]}else for(c in a){d=a[c];n=false;if(l&&/^(x|y|r|start|end|width|height|innerR)/.test(c)){if(!J){this.symbolAttr(a); -J=true}n=true}else if(c==="d"){d=d||[];this.d=d.join(" ");e=d.length;for(n=[];e--;)n[e]=dc(d[e])?X(d[e]*10)-5:d[e]==="Z"?"x":d[e];d=n.join(" ")||"x";f.path=d;if(D)for(e=D.length;e--;)D[e].path=d;n=true}else if(c==="zIndex"||c==="visibility"){if(zc&&c==="visibility"&&h==="DIV"){f.gVis=d;n=f.childNodes;for(e=n.length;e--;)Na(n[e],{visibility:d});if(d===Ab)d=null}if(d)g[c]=d;n=true}else if(/^(width|height)$/.test(c)){if(this.updateClipping){this[c]=d;this.updateClipping()}else g[c]=d;n=true}else if(/^(x|y)$/.test(c)){this[c]= -d;if(f.tagName==="SPAN")this.updateTransform();else g[{x:"left",y:"top"}[c]]=d}else if(c==="class")f.className=d;else if(c==="stroke"){d=j.color(d,f,c);c="strokecolor"}else if(c==="stroke-width"||c==="strokeWidth"){f.stroked=d?true:false;c="strokeweight";this[c]=d;if(dc(d))d+=bb}else if(c==="dashstyle"){(f.getElementsByTagName("stroke")[0]||ib(j.prepVML([""]),null,null,f))[c]=d||"solid";this.dashstyle=d;n=true}else if(c==="fill")if(h==="SPAN")g.color=d;else{f.filled=d!==jb?true:false;d=j.color(d, -f,c);c="fillcolor"}else if(c==="translateX"||c==="translateY"||c==="rotation"||c==="align"){if(c==="align")c="textAlign";this[c]=d;this.updateTransform();n=true}else if(c==="text"){this.bBox=null;f.innerHTML=d;n=true}if(D&&c==="visibility")for(e=D.length;e--;)D[e].style[c]=d;if(!n)if(zc)f[c]=d;else Ea(f,c,d)}return aa},clip:function(a){var b=this,c=a.members;c.push(b);b.destroyClip=function(){qc(c,b)};return b.css(a.getCSS(b.inverted))},css:function(a){var b=this.element;if(b=a&&b.tagName==="SPAN"&& -a.width){delete a.width;this.textWidth=b;this.updateTransform()}this.styles=pa(this.styles,a);Na(this.element,a);return this},destroy:function(){this.destroyClip&&this.destroyClip();Ic.prototype.destroy.apply(this)},empty:function(){for(var a=this.element.childNodes,b=a.length,c;b--;){c=a[b];c.parentNode.removeChild(c)}},getBBox:function(){var a=this.element,b=this.bBox;if(!b){if(a.nodeName==="text")a.style.position=oc;b=this.bBox={x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}}return b}, -on:function(a,b){this.element["on"+a]=function(){var c=cb.event;c.target=c.srcElement;b(c)};return this},updateTransform:function(){if(this.added){var a=this,b=a.element,c=a.translateX||0,d=a.translateY||0,e=a.x||0,f=a.y||0,g=a.textAlign||"left",h={left:0,center:0.5,right:1}[g],j=g&&g!=="left";if(c||d)a.css({marginLeft:c,marginTop:d});a.inverted&&u(b.childNodes,function(R){a.renderer.invertChild(R,b)});if(b.tagName==="SPAN"){var l,n;c=a.rotation;var J;l=0;d=1;var D=0,aa;J=ja(a.textWidth);var E=a.xCorr|| -0,da=a.yCorr||0,w=[c,g,b.innerHTML,a.textWidth].join(",");if(w!==a.cTT){if(M(c)){l=c*Ud;d=nb(l);D=Db(l);Na(b,{filter:c?["progid:DXImageTransform.Microsoft.Matrix(M11=",d,", M12=",-D,", M21=",D,", M22=",d,", sizingMethod='auto expand')"].join(""):jb})}l=b.offsetWidth;n=b.offsetHeight;if(l>J){Na(b,{width:J+bb,display:"block",whiteSpace:"normal"});l=J}J=X((ja(b.style.fontSize)||12)*1.2);E=d<0&&-l;da=D<0&&-n;aa=d*D<0;E+=D*J*(aa?1-h:h);da-=d*J*(c?aa?h:1-h:1);if(j){E-=l*h*(d<0?-1:1);if(c)da-=n*h*(D<0?-1: -1);Na(b,{textAlign:g})}a.xCorr=E;a.yCorr=da}Na(b,{left:e+E,top:f+da});a.cTT=w}}else this.alignOnAdd=true},shadow:function(a,b){var c=[],d,e=this.element,f=this.renderer,g,h=e.style,j,l=e.path;if(l&&typeof l.value!=="string")l="x";if(a){for(d=1;d<=3;d++){j=[''];g=ib(f.prepVML(j),null,{left:ja(h.left)+1,top:ja(h.top)+1});j=[''];ib(f.prepVML(j), -null,null,g);b?b.element.appendChild(g):e.parentNode.insertBefore(g,e);c.push(g)}this.shadows=c}return this}});la=function(){this.init.apply(this,arguments)};la.prototype=va(Vc.prototype,{Element:Eb,isIE8:pc.indexOf("MSIE 8.0")>-1,init:function(a,b,c){var d;this.alignedObjects=[];d=this.createElement(Qb);a.appendChild(d.element);this.box=d.element;this.boxWrapper=d;this.setSize(b,c,false);if(!wa.namespaces.hcv){wa.namespaces.add("hcv","urn:schemas-microsoft-com:vml");wa.createStyleSheet().cssText= -"hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}},clipRect:function(a,b,c,d){var e=this.createElement();return pa(e,{members:[],left:a,top:b,width:c,height:d,getCSS:function(f){var g=this.top,h=this.left,j=h+this.width,l=g+this.height;g={clip:"rect("+X(f?h:g)+"px,"+X(f?l:j)+"px,"+X(f?j:l)+"px,"+X(f?g:h)+"px)"};!f&&zc&&pa(g,{width:j+bb,height:l+bb});return g},updateClipping:function(){u(e.members,function(f){f.css(e.getCSS(f.inverted))})}})}, -color:function(a,b,c){var d,e=/^rgba/;if(a&&a.linearGradient){var f,g,h=a.linearGradient,j,l,n,J;u(a.stops,function(D,aa){if(e.test(D[1])){d=Yb(D[1]);f=d.get("rgb");g=d.get("a")}else{f=D[1];g=1}if(aa){n=f;J=g}else{j=f;l=g}});a=90-sa.atan((h[3]-h[1])/(h[2]-h[0]))*180/cc;c=["<",c,' colors="0% ',j,",100% ",n,'" angle="',a,'" opacity="',J,'" o:opacity2="',l,'" type="gradient" focus="100%" />'];ib(this.prepVML(c),null,null,b)}else if(e.test(a)&&b.tagName!=="IMG"){d=Yb(a);c=["<",c,' opacity="',d.get("a"), -'"/>'];ib(this.prepVML(c),null,null,b);return d.get("rgb")}else return a},prepVML:function(a){var b=this.isIE8;a=a.join("");if(b){a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />');a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')}else a=a.replace("<","1&&f.css({left:b,top:c,width:d,height:e});return f},rect:function(a,b, -c,d,e,f){if(Lb(a)){b=a.y;c=a.width;d=a.height;e=a.r;f=a.strokeWidth;a=a.x}var g=this.symbol("rect");g.r=e;return g.attr(g.crisp(f,a,b,Ha(c,0),Ha(d,0)))},invertChild:function(a,b){var c=b.style;Na(a,{flip:"x",left:ja(c.width)-10,top:ja(c.height)-10,rotation:-90})},symbols:{arc:function(a,b,c,d){var e=d.start,f=d.end,g=nb(e),h=Db(e),j=nb(f),l=Db(f);d=d.innerR;var n=0.07/c,J=d&&0.1/d||0;if(f-e===0)return["x"];else if(2*cc-f+e',this.name||b.name,": ",!a?"x = "+(this.name||this.x)+", ":"","",!a?"y = ":"",this.y,""].join("")},update:function(a,b,c){var d=this,e=d.series,f=d.graphic,g=e.chart;b=C(b,true);d.firePointEvent("update",{options:a},function(){d.applyOptions(a);if(Lb(a)){e.getAttribs();f&&f.attr(d.pointAttr[e.state])}e.isDirty=true;b&&g.redraw(c)})},remove:function(a,b){var c= -this,d=c.series,e=d.chart,f=d.data;ec(b,e);a=C(a,true);c.firePointEvent("remove",null,function(){qc(f,c);c.destroy();d.isDirty=true;a&&e.redraw()})},firePointEvent:function(a,b,c){var d=this,e=this.series.options;if(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])this.importEvents();if(a==="click"&&e.allowPointSelect)c=function(f){d.select(null,f.ctrlKey||f.metaKey||f.shiftKey)};Pa(this,a,b,c)},importEvents:function(){if(!this.hasImportedEvents){var a=va(this.series.options.point, -this.options).events,b;this.events=a;for(b in a)Sa(this,b,a[b]);this.hasImportedEvents=true}},setState:function(a){var b=this.series,c=b.options.states,d=xb[b.type].marker&&b.options.marker,e=d&&!d.enabled,f=(d=d&&d.states[a])&&d.enabled===false,g=b.stateMarkerGraphic,h=b.chart,j=this.pointAttr;a=a||hb;if(!(a===this.state||this.selected&&a!=="select"||c[a]&&c[a].enabled===false||a&&(f||e&&!d.enabled))){if(this.graphic)this.graphic.attr(j[a]);else{if(a){if(!g)b.stateMarkerGraphic=g=h.renderer.circle(0, -0,j[a].r).attr(j[a]).add(b.group);g.translate(this.plotX,this.plotY)}if(g)g[a?"show":"hide"]()}this.state=a}}};var pb=function(){};pb.prototype={isCartesian:true,type:"line",pointClass:Ac,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},init:function(a,b){var c,d;d=a.series.length;this.chart=a;b=this.setOptions(b);pa(this,{index:d,options:b,name:b.name||"Series "+(d+1),state:hb,pointAttr:{},visible:b.visible!==false,selected:b.selected===true});d=b.events; -for(c in d)Sa(this,c,d[c]);if(d&&d.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=true;this.getColor();this.getSymbol();this.setData(b.data,false)},autoIncrement:function(){var a=this.options,b=this.xIncrement;b=C(b,a.pointStart,0);this.pointInterval=C(this.pointInterval,a.pointInterval,1);this.xIncrement=b+this.pointInterval;return b},cleanData:function(){var a=this.chart,b=this.data,c,d,e=a.smallestInterval,f,g;b.sort(function(h,j){return h.x-j.x});if(this.options.connectNulls)for(g= -b.length-1;g>=0;g--)b[g].y===null&&b[g-1]&&b[g+1]&&b.splice(g,1);for(g=b.length-1;g>=0;g--)if(b[g-1]){f=b[g].x-b[g-1].x;if(f>0&&(d===Va||fa+1&&b.push(c.slice(a+1,e));a=e}else e===c.length-1&&b.push(c.slice(a+1,e+1))});this.segments=b},setOptions:function(a){var b=this.chart.options.plotOptions;return va(b[this.type],b.series,a)},getColor:function(){var a= -this.chart.options.colors,b=this.chart.counters;this.color=this.options.color||a[b.color++]||"#0000ff";b.wrapColor(a.length)},getSymbol:function(){var a=this.chart.options.symbols,b=this.chart.counters;this.symbol=this.options.marker.symbol||a[b.symbol++];b.wrapSymbol(a.length)},addPoint:function(a,b,c,d){var e=this.data,f=this.graph,g=this.area,h=this.chart;a=(new this.pointClass).init(this,a);ec(d,h);if(f&&c)f.shift=c;if(g){g.shift=c;g.isArea=true}b=C(b,true);e.push(a);c&&e[0].remove(false);this.getAttribs(); -this.isDirty=true;b&&h.redraw()},setData:function(a,b){var c=this,d=c.data,e=c.initialColor,f=c.chart,g=d&&d.length||0;c.xIncrement=null;if(M(e))f.counters.color=e;for(a=mc(rc(a||[]),function(h){return(new c.pointClass).init(c,h)});g--;)d[g].destroy();c.data=a;c.cleanData();c.getSegments();c.getAttribs();c.isDirty=true;f.isDirtyBox=true;C(b,true)&&f.redraw(false)},remove:function(a,b){var c=this,d=c.chart;a=C(a,true);if(!c.isRemoving){c.isRemoving=true;Pa(c,"remove",null,function(){c.destroy();d.isDirtyLegend= -d.isDirtyBox=true;a&&d.redraw(b)})}c.isRemoving=false},translate:function(){for(var a=this.chart,b=this.options.stacking,c=this.xAxis.categories,d=this.yAxis,e=this.data,f=e.length;f--;){var g=e[f],h=g.x,j=g.y,l=g.low,n=d.stacks[(j<0?"-":"")+this.stackKey];g.plotX=this.xAxis.translate(h);if(b&&this.visible&&n&&n[h]){l=n[h];h=l.total;l.cum=l=l.cum-j;j=l+j;if(b==="percent"){l=h?l*100/h:0;j=h?j*100/h:0}g.percentage=h?g.y*100/h:0;g.stackTotal=h}if(M(l))g.yBottom=d.translate(l,0,1,0,1);if(j!==null)g.plotY= -d.translate(j,0,1,0,1);g.clientX=a.inverted?a.plotHeight-g.plotX:g.plotX;g.category=c&&c[g.x]!==Va?c[g.x]:g.x}},setTooltipPoints:function(a){var b=this.chart,c=b.inverted,d=[],e=X((c?b.plotTop:b.plotLeft)+b.plotSizeX),f,g,h=[];if(a)this.tooltipPoints=null;u(this.segments,function(j){d=d.concat(j)});if(this.xAxis&&this.xAxis.reversed)d=d.reverse();u(d,function(j,l){f=d[l-1]?d[l-1]._high+1:0;for(g=j._high=d[l+1]?kb((j.plotX+(d[l+1]?d[l+1].plotX:e))/2):e;f<=g;)h[c?e-f++:f++]=j});this.tooltipPoints=h}, -onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(!(!Jb&&a.mouseIsDown)){b&&b!==this&&b.onMouseOut();this.options.events.mouseOver&&Pa(this,"mouseOver");this.tracker&&this.tracker.toFront();this.setState(Bb);a.hoverSeries=this}},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;d&&d.onMouseOut();this&&a.events.mouseOut&&Pa(this,"mouseOut");c&&!a.stickyTracking&&c.hide();this.setState();b.hoverSeries=null},animate:function(a){var b=this.chart,c=this.clipRect, -d=this.options.animation;if(d&&!Lb(d))d={};if(a){if(!c.isAnimating){c.attr("width",0);c.isAnimating=true}}else{c.animate({width:b.plotSizeX},d);this.animate=null}},drawPoints:function(){var a,b=this.data,c=this.chart,d,e,f,g,h,j;if(this.options.marker.enabled)for(f=b.length;f--;){g=b[f];d=g.plotX;e=g.plotY;j=g.graphic;if(e!==Va&&!isNaN(e)){a=g.pointAttr[g.selected?"select":hb];h=a.r;if(j)j.animate({x:d,y:e,r:h});else g.graphic=c.renderer.symbol(C(g.marker&&g.marker.symbol,this.symbol),d,e,h).attr(a).add(this.group)}}}, -convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,h={};a=a||{};b=b||{};c=c||{};d=d||{};for(f in e){g=e[f];h[f]=C(a[g],b[f],c[f],d[f])}return h},getAttribs:function(){var a=this,b=xb[a.type].marker?a.options.marker:a.options,c=b.states,d=c[Bb],e,f=a.color,g={stroke:f,fill:f},h=a.data,j=[],l,n=a.pointAttrToOptions,J;if(a.options.marker){d.radius=d.radius||b.radius+2;d.lineWidth=d.lineWidth||b.lineWidth+1}else d.color=d.color||Yb(d.color||f).brighten(d.brightness).get();j[hb]=a.convertAttribs(b, -g);u([Bb,"select"],function(D){j[D]=a.convertAttribs(c[D],j[hb])});a.pointAttr=j;for(f=h.length;f--;){g=h[f];if((b=g.options&&g.options.marker||g.options)&&b.enabled===false)b.radius=0;e=false;if(g.options)for(J in n)if(M(b[n[J]]))e=true;if(e){l=[];c=b.states||{};e=c[Bb]=c[Bb]||{};if(!a.options.marker)e.color=Yb(e.color||g.options.color).brighten(e.brightness||d.brightness).get();l[hb]=a.convertAttribs(b,j[hb]);l[Bb]=a.convertAttribs(c[Bb],j[Bb],l[hb]);l.select=a.convertAttribs(c.select,j.select, -l[hb])}else l=j;g.pointAttr=l}},destroy:function(){var a=this,b=a.chart,c=/\/5[0-9\.]+ (Safari|Mobile)\//.test(pc),d,e;Pa(a,"destroy");Cb(a);a.legendItem&&a.chart.legend.destroyItem(a);u(a.data,function(f){f.destroy()});u(["area","graph","dataLabelsGroup","group","tracker"],function(f){if(a[f]){d=c&&f==="group"?"hide":"destroy";a[f][d]()}});if(b.hoverSeries===a)b.hoverSeries=null;qc(b.series,a);for(e in a)delete a[e]},drawDataLabels:function(){if(this.options.dataLabels.enabled){var a=this,b,c,d= -a.data,e=a.options.dataLabels,f,g=a.dataLabelsGroup,h=a.chart,j=h.inverted,l=a.type,n;n=a.options.stacking;var J=l==="column"||l==="bar",D=e.verticalAlign===null,aa=e.y===null;if(J)if(n){if(D)e=va(e,{verticalAlign:"middle"});if(aa)e=va(e,{y:{top:14,middle:4,bottom:-6}[e.verticalAlign]})}else if(D)e=va(e,{verticalAlign:"top"});if(!g)g=a.dataLabelsGroup=h.renderer.g("data-labels").attr({visibility:a.visible?Ab:ub,zIndex:6}).translate(h.plotLeft,h.plotTop).add();n=e.color;if(n==="auto")n=null;e.style.color= -C(n,a.color);u(d,function(E){var da=E.barX,w=da&&da+E.barW/2||E.plotX||-999,R=C(E.plotY,-999),B=E.dataLabel,K=e.align,S=aa?E.y>0?-6:12:e.y;f=e.formatter.call(E.getLabelConfig());b=(j?h.plotWidth-R:w)+e.x;c=(j?h.plotHeight-w:R)+S;if(l==="column")b+={left:-1,right:1}[K]*E.barW/2||0;if(j&&E.y<0){K="right";b-=10}if(B){if(j&&!e.y)c=c+ja(B.styles.lineHeight)*0.9-B.getBBox().height/2;B.attr({text:f}).animate({x:b,y:c})}else if(M(f)){B=E.dataLabel=h.renderer.text(f,b,c).attr({align:K,rotation:e.rotation, -zIndex:1}).css(e.style).add(g);j&&!e.y&&B.attr({y:c+ja(B.styles.lineHeight)*0.9-B.getBBox().height/2})}if(J&&a.options.stacking){w=E.barY;R=E.barW;E=E.barH;B.align(e,null,{x:j?h.plotWidth-w-E:da,y:j?h.plotHeight-da-R:w,width:j?E:R,height:j?R:E})}})}},drawGraph:function(){var a=this,b=a.options,c=a.graph,d=[],e,f=a.area,g=a.group,h=b.lineColor||a.color,j=b.lineWidth,l=b.dashStyle,n,J=a.chart.renderer,D=a.yAxis.getThreshold(b.threshold||0),aa=/^area/.test(a.type),E=[],da=[];u(a.segments,function(w){n= -[];u(w,function(S,I){if(a.getPointSpline)n.push.apply(n,a.getPointSpline(w,S,I));else{n.push(I?La:ab);I&&b.step&&n.push(S.plotX,w[I-1].plotY);n.push(S.plotX,S.plotY)}});if(w.length>1)d=d.concat(n);else E.push(w[0]);if(aa){var R=[],B,K=n.length;for(B=0;B=0;B--)R.push(w[B].plotX,w[B].yBottom);else R.push(La,w[w.length-1].plotX,D,La,w[0].plotX,D);da=da.concat(R)}});a.graphPath=d;a.singlePoints=E;if(aa){e= -C(b.fillColor,Yb(a.color).setOpacity(b.fillOpacity||0.75).get());if(f)f.animate({d:da});else a.area=a.chart.renderer.path(da).attr({fill:e}).add(g)}if(c)c.animate({d:d});else if(j){c={stroke:h,"stroke-width":j};if(l)c.dashstyle=l;a.graph=J.path(d).attr(c).add(g).shadow(b.shadow)}},render:function(){var a=this,b=a.chart,c,d,e=a.options,f=e.animation,g=f&&a.animate;f=g?f&&f.duration||500:0;var h=a.clipRect,j=b.renderer;if(!h){h=a.clipRect=!b.hasRendered&&b.clipRect?b.clipRect:j.clipRect(0,0,b.plotSizeX, -b.plotSizeY);if(!b.clipRect)b.clipRect=h}if(!a.group){c=a.group=j.g("series");if(b.inverted){d=function(){c.attr({width:b.plotWidth,height:b.plotHeight}).invert()};d();Sa(b,"resize",d);Sa(a,"destroy",function(){Cb(b,"resize",d)})}c.clip(a.clipRect).attr({visibility:a.visible?Ab:ub,zIndex:e.zIndex}).translate(b.plotLeft,b.plotTop).add(b.seriesGroup)}a.drawDataLabels();g&&a.animate(true);a.drawGraph&&a.drawGraph();a.drawPoints();a.options.enableMouseTracking!==false&&a.drawTracker();g&&a.animate(); -setTimeout(function(){h.isAnimating=false;if((c=a.group)&&h!==b.clipRect&&h.renderer){c.clip(a.clipRect=b.clipRect);h.destroy()}},f);a.isDirty=false},redraw:function(){var a=this.chart,b=this.group;if(b){a.inverted&&b.attr({width:a.plotWidth,height:a.plotHeight});b.animate({translateX:a.plotLeft,translateY:a.plotTop})}this.translate();this.setTooltipPoints(true);this.render()},setState:function(a){var b=this.options,c=this.graph,d=b.states;b=b.lineWidth;a=a||hb;if(this.state!==a){this.state=a;if(!(d[a]&& -d[a].enabled===false)){if(a)b=d[a].lineWidth||b+1;if(c&&!c.dashstyle)c.attr({"stroke-width":b},a?0:500)}}},setVisible:function(a,b){var c=this.chart,d=this.legendItem,e=this.group,f=this.tracker,g=this.dataLabelsGroup,h,j=this.data,l=c.options.chart.ignoreHiddenSeries;h=this.visible;h=(this.visible=a=a===Va?!h:a)?"show":"hide";e&&e[h]();if(f)f[h]();else for(e=j.length;e--;){f=j[e];f.tracker&&f.tracker[h]()}g&&g[h]();d&&c.legend.colorizeItem(this,a);this.isDirty=true;this.options.stacking&&u(c.series, -function(n){if(n.options.stacking&&n.visible)n.isDirty=true});if(l)c.isDirtyBox=true;b!==false&&c.redraw();Pa(this,h)},show:function(){this.setVisible(true)},hide:function(){this.setVisible(false)},select:function(a){this.selected=a=a===Va?!this.selected:a;if(this.checkbox)this.checkbox.checked=a;Pa(this,a?"select":"unselect")},drawTracker:function(){var a=this,b=a.options,c=[].concat(a.graphPath),d=c.length,e=a.chart,f=e.options.tooltip.snap,g=a.tracker,h=b.cursor;h=h&&{cursor:h};var j=a.singlePoints, -l;if(d)for(l=d+1;l--;){c[l]===ab&&c.splice(l+1,0,c[l+1]-f,c[l+2],La);if(l&&c[l]===ab||l===d)c.splice(l,0,La,c[l-2]+f,c[l-1])}for(l=0;la&&j>e){j=Ha(a,e);n=2*e-j}else if(jg&&n>e){n=Ha(g,e);j=2*e-n}else if(nK?za-K:B-(I<=B?K:0)}Kb=gb-3}pa(S,{barX:Da,barY:gb,barW:w,barH:wb});S.shapeType="rect";I=pa(b.renderer.Element.prototype.crisp.apply({},[e,Da,gb,w,wb]),{r:c.borderRadius});if(e% -2){I.y-=1;I.height+=1}S.shapeArgs=I;S.trackerArgs=M(Kb)&&va(S.shapeArgs,{height:Ha(6,wb+3),y:Kb})})},getSymbol:function(){},drawGraph:function(){},drawPoints:function(){var a=this,b=a.options,c=a.chart.renderer,d,e;u(a.data,function(f){var g=f.plotY;if(g!==Va&&!isNaN(g)&&f.y!==null){d=f.graphic;e=f.shapeArgs;if(d){Tc(d);d.animate(e)}else f.graphic=c[f.shapeType](e).attr(f.pointAttr[f.selected?"select":hb]).add(a.group).shadow(b.shadow)}})},drawTracker:function(){var a=this,b=a.chart,c=b.renderer, -d,e,f=+new Date,g=a.options.cursor,h=g&&{cursor:g},j;u(a.data,function(l){e=l.tracker;d=l.trackerArgs||l.shapeArgs;delete d.strokeWidth;if(l.y!==null)if(e)e.attr(d);else l.tracker=c[l.shapeType](d).attr({isTracker:f,fill:Wd,visibility:a.visible?Ab:ub,zIndex:1}).on(Jb?"touchstart":"mouseover",function(n){j=n.relatedTarget||n.fromElement;b.hoverSeries!==a&&Ea(j,"isTracker")!==f&&a.onMouseOver();l.onMouseOver()}).on("mouseout",function(n){if(!a.options.stickyTracking){j=n.relatedTarget||n.toElement; -Ea(j,"isTracker")!==f&&a.onMouseOut()}}).css(h).add(l.group||b.trackerGroup)})},animate:function(a){var b=this,c=b.data;if(!a){u(c,function(d){var e=d.graphic;d=d.shapeArgs;if(e){e.attr({height:0,y:b.yAxis.translate(0,0,1)});e.animate({height:d.height,y:d.y},b.options.animation)}});b.animate=null}},remove:function(){var a=this,b=a.chart;b.hasRendered&&u(b.series,function(c){if(c.type===a.type)c.isDirty=true});pb.prototype.remove.apply(a,arguments)}});vb.column=ad;la=yb(ad,{type:"bar",init:function(a){a.inverted= -this.inverted=true;ad.prototype.init.apply(this,arguments)}});vb.bar=la;la=yb(pb,{type:"scatter",translate:function(){var a=this;pb.prototype.translate.apply(a);u(a.data,function(b){b.shapeType="circle";b.shapeArgs={x:b.plotX,y:b.plotY,r:a.chart.options.tooltip.snap}})},drawTracker:function(){var a=this,b=a.options.cursor,c=b&&{cursor:b},d;u(a.data,function(e){(d=e.graphic)&&d.attr({isTracker:true}).on("mouseover",function(){a.onMouseOver();e.onMouseOver()}).on("mouseout",function(){a.options.stickyTracking|| -a.onMouseOut()}).css(c)})},cleanData:function(){}});vb.scatter=la;la=yb(Ac,{init:function(){Ac.prototype.init.apply(this,arguments);var a=this,b;pa(a,{visible:a.visible!==false,name:C(a.name,"Slice")});b=function(){a.slice()};Sa(a,"select",b);Sa(a,"unselect",b);return a},setVisible:function(a){var b=this.series.chart,c=this.tracker,d=this.dataLabel,e=this.connector,f=this.shadowGroup,g;g=(this.visible=a=a===Va?!this.visible:a)?"show":"hide";this.group[g]();c&&c[g]();d&&d[g]();e&&e[g]();f&&f[g](); -this.legendItem&&b.legend.colorizeItem(this,a)},slice:function(a,b,c){var d=this.series.chart,e=this.slicedTranslation;ec(c,d);C(b,true);a=this.sliced=M(a)?a:!this.sliced;a={translateX:a?e[0]:d.plotLeft,translateY:a?e[1]:d.plotTop};this.group.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)}});la=yb(pb,{type:"pie",isCartesian:false,pointClass:la,pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},getColor:function(){this.initialColor=this.chart.counters.color}, -animate:function(){var a=this;u(a.data,function(b){var c=b.graphic;b=b.shapeArgs;var d=-cc/2;if(c){c.attr({r:0,start:d,end:d});c.animate({r:b.r,start:b.start,end:b.end},a.options.animation)}});a.animate=null},translate:function(){var a=0,b=this,c=-0.25,d=b.options,e=d.slicedOffset,f=e+d.borderWidth,g=d.center.concat([d.size,d.innerSize||0]),h=b.chart,j=h.plotWidth,l=h.plotHeight,n,J,D,aa=b.data,E=2*cc,da,w=qb(j,l),R,B,K,S=d.dataLabels.distance;g=mc(g,function(I,za){return(R=/%$/.test(I))?[j,l,w,w][za]* -ja(I)/100:I});b.getX=function(I,za){D=sa.asin((I-g[1])/(g[2]/2+S));return g[0]+(za?-1:1)*nb(D)*(g[2]/2+S)};b.center=g;u(aa,function(I){a+=I.y});u(aa,function(I){da=a?I.y/a:0;n=X(c*E*1E3)/1E3;c+=da;J=X(c*E*1E3)/1E3;I.shapeType="arc";I.shapeArgs={x:g[0],y:g[1],r:g[2]/2,innerR:g[3]/2,start:n,end:J};D=(J+n)/2;I.slicedTranslation=mc([nb(D)*e+h.plotLeft,Db(D)*e+h.plotTop],X);B=nb(D)*g[2]/2;b.radiusY=K=Db(D)*g[2]/2;I.tooltipPos=[g[0]+B*0.7,g[1]+K*0.7];I.labelPos=[g[0]+B+nb(D)*S,g[1]+K+Db(D)*S,g[0]+B+nb(D)* -f,g[1]+K+Db(D)*f,g[0]+B,g[1]+K,S<0?"center":D0,J=this.center[1],D=[[],[]],aa,E,da,w,R=2,B;if(d.enabled){pb.prototype.drawDataLabels.apply(this);u(a,function(gb){D[gb.labelPos[7]da){h=[].concat(I);h.sort(w);for(B=za;B--;)h[B].rank=B;for(B=za;B--;)I[B].rank>=da&&I.splice(B,1);za=I.length}for(B= -0;BE&&K[Da+1]!==null||aa").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.3",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
    a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
    ",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
    t
    ",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
    ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist deleted file mode 100644 index 89fc519..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist +++ /dev/null @@ -1,19 +0,0 @@ - - {name} - -
    -
    -
    - - {methods_tested_percent} - {methods_number} - {crap} - -
    -
    -
    - - {lines_executed_percent} - {num_executed_lines} / {num_executable_lines} - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/style.css b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/style.css deleted file mode 100644 index 3070a60..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/style.css +++ /dev/null @@ -1,500 +0,0 @@ -/* All views: initial background and text color */ -body -{ - background-color: #fff; - color: #2e3436; - font-family: arial, helvetica, sans-serif; - font-size: 12px; - margin: 0 auto; - width: 100%; -} - -/* All views: standard link format*/ -a:link -{ - color: #2e3436; - text-decoration: underline; -} - -/* All views: standard link - visited format */ -a:visited -{ - color: #2e3436; - text-decoration: underline; -} - -/* All views: standard link - activated format */ -a:active -{ - color: #2e3436; - text-decoration: underline; -} - -/* All views: main title format */ -td.title -{ - text-align: center; - padding: 10px; - font-family: sans-serif; - font-style: italic; - font-weight: bold; - font-size: 1.6em; -} - -/* All views: header item format */ -td.headerItem -{ - text-align: right; - padding-right: 6px; - font-family: sans-serif; - font-weight: bold; -} - -/* All views: header item value format */ -td.headerValue -{ - text-align: left; - font-family: sans-serif; - font-weight: bold; -} - -/* All views: header legend item format */ -td.legendItem -{ - text-align: right; - padding-right: 6px; - padding-top: 10px; - padding-bottom: 2px; - font-family: sans-serif; - font-weight: bold; -} - -/* All views: header legend item value format */ -td.legendValue -{ - text-align: left; - padding-top: 10px; - padding-bottom: 2px; - color: #2e3436; - font-family: sans-serif; - font-weight: bold; -} - -/* All views: color of horizontal ruler */ -td.ruler -{ - background-color: #d3d7cf; -} - -/* All views: version string format */ -td.versionInfo -{ - text-align: center; - padding-top: 2px; - font-family: sans-serif; - font-style: italic; -} - -/* Directory view/File view (all)/Test case descriptions: -table headline format */ -td.tableHead -{ - text-align: center; - color: #ffffff; - background-color: #555753; - font-family: sans-serif; - font-weight: bold; -} - -/* Directory view/File view (all): filename entry format */ -td.coverItem, td.coverDirectory, td.coverFile -{ - text-align: left; - padding-left: 10px; - padding-right: 20px; - background-color: #d3d7cf; - font-family: monospace; -} - -td.coverDirectory -{ - font-weight: bold; -} - -/* Directory view/File view (all): bar-graph entry format*/ -td.coverBar -{ - padding-left: 10px; - padding-right: 10px; - background-color: #d3d7cf; - text-align:center; - width: 100px; -} - -/* Directory view/File view (all): bar-graph outline color */ -div.coverBarOutline -{ - background-color: #fff; - border: 1px solid #2e3436; - height: 10px; - overflow:hidden; - width: 100px; -} - -/* Directory view/File view (all): common style for bar-graph */ -div.coverBarOutline div.size -{ - height: 10px; float:left; -} - -/* Directory view/File view (all): bar-graph color no coverage rate */ -div.coverBarOutline div.snow -{ - background-color:#fff; -} - -/* Directory view/File view (all): bar-graph color for low coverage rate */ -div.coverBarOutline div.scarlet_red -{ - background-color:#ef2929; -} - -/* Directory view/File view (all): bar-graph color for middle coverage rate */ -div.coverBarOutline div.butter -{ - background-color:#fce94f; -} - -/* Directory view/File view (all): bar-graph color for high coverage rate */ -div.coverBarOutline div.chameleon -{ - background-color:#8ae234; -} - -/* Directory view/File view (all): percentage entry for files with -no coverage rate */ -td.coverPerNone -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #d3d7cf; - font-weight: bold; -} - -/* Directory view/File view (all): line count entry for files with -no coverage rate */ -td.coverNumNone -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #d3d7cf; - white-space: nowrap; -} - -/* Directory view/File view (all): percentage entry for files with -high coverage rate */ -td.coverPerHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #8ae234; - font-weight: bold; -} - -/* Directory view/File view (all): line count entry for files with -high coverage rate */ -td.coverNumHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #8ae234; - white-space: nowrap; -} - -/* Directory view/File view (all): legend entry for high coverage -rate */ -span.coverLegendHi -{ - text-align: center; - padding-left: 10px; - padding-right: 10px; - background-color: #8ae234; -} - -/* Directory view/File view (all): percentage entry for files with -medium coverage rate */ -td.coverPerMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #fce94f; - font-weight: bold; -} - -/* Directory view/File view (all): line count entry for files with -medium coverage rate */ -td.coverNumMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #fce94f; - white-space: nowrap; -} - -/* Directory view/File view (all): legend entry for medium coverage -rate */ -span.coverLegendMed -{ - text-align: center; - padding-left: 10px; - padding-right: 10px; - margin-top: 5px; - margin-bottom: 5px; - margin-right: 2px; - background-color: #fce94f; -} - -/* Directory view/File view (all): percentage entry for files with -low coverage rate */ -td.coverPerLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #f57900; - font-weight: bold; -} - -/* Directory view/File view (all): line count entry for files with -low coverage rate */ -td.coverNumLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #f57900; - white-space: nowrap; -} - -/* Directory view/File view (all): legend entry for low coverage -rate */ -span.coverLegendLo -{ - text-align: center; - padding-left: 10px; - padding-right: 10px; - margin-right: 2px; - background-color: #f57900; -} - -/* File view (all): "show/hide details" link format */ -a.detail:link -{ - color: #ffffff; -} - -/* File view (all): "show/hide details" link - visited format */ -a.detail:visited -{ - color: #ffffff; -} - -/* File view (all): "show/hide details" link - activated format */ -a.detail:active -{ - color: #ffffff; -} - -/* File view (detail): test name table headline format */ -td.testNameHead -{ - text-align: left; - padding-left: 10px; - background-color: #729fcf; - font-family: sans-serif; - font-weight: bold; -} - -/* File view (detail): test lines table headline format */ -td.testLinesHead -{ - text-align: center; - background-color: #729fcf; - font-family: sans-serif; - font-weight: bold; -} - -/* File view (detail): test name entry */ -td.testName -{ - text-align: left; - padding-left: 10px; - background-color: #729fcf; -} - -/* File view (detail): test percentage entry */ -td.testPer -{ - text-align: right; - vertical-align: top; - padding-left: 10px; - padding-right: 10px; - background-color: #729fcf; -} - -/* File view (detail): test lines count entry */ -td.testNum -{ - text-align: right; - vertical-align: top; - padding-left: 10px; - padding-right: 10px; - background-color: #729fcf; - white-space: nowrap; -} - -/* Test case descriptions: test name format*/ -dt -{ - font-family: sans-serif; - font-weight: bold; -} - -/* Test case descriptions: description table body */ -td.testDescription -{ - padding-top: 10px; - padding-left: 30px; - padding-bottom: 10px; - padding-right: 30px; - background-color: #729fcf; -} - -/* Source code view: source code format */ -pre.source -{ - font-family: monospace; - white-space: pre; -} - -/* Source code view: line number format */ -span.lineNum -{ - background-color: #d3d7cf; -} - -span.lineNum a { - text-decoration: none; -} - -/* Source code view: format for lines which were executed */ -span.lineCov -{ - background-color: #8ae234; -} - -/* Source code view: format for Cov legend */ -span.LegendCov -{ - text-align: center; - padding-left: 10px; - padding-right: 10px; - margin-right: 2px; - background-color: #8ae234; -} - -/* Source code view: format for lines which were not executed */ -span.lineNoCov -{ - background-color: #f57900; -} - -/* Source code view: format for NoCov legend */ -span.LegendNoCov -{ - text-align: center; - padding-left: 10px; - padding-right: 10px; - margin-right: 2px; - background-color: #f57900; -} - -/* Source code view: format for lines which are dead code */ -span.lineDeadCode -{ - background-color: #d3d7cf; -} - -/* Source code view: format for NoCov legend */ -span.LegendDeadCode -{ - text-align: center; - padding-left: 10px; - padding-right: 10px; - margin-right: 2px; - background-color: #d3d7cf; -} - -/* Test view: format for tests which have passed */ -li.testPassed -{ -} - -/* Test view: format for tests which failed */ -li.testFailure -{ - background-color: #f57900; -} - -/* Test view: format for tests which failed with an error */ -li.testError -{ - background-color: #f57900; -} - -/* Test view: format for incomplete and skipped tests */ -li.testIncomplete -{ - background-color: #fcaf3e; -} - -/* CRAP */ -td.crap -{ - text-align: right; - padding-left: 10px; - padding-right: 20px; - background-color: #d3d7cf; -} - -pre span.comment { - color: #888a85; -} - -pre span.default { - color: #2e3436; -} - -pre span.html { - color: #888a85; -} - -pre span.keyword { - color: #2e3436; - font-weight: bold; -} - -pre span.string { - color: #2e3436; -} - -#classCoverageDistribution, #classComplexity { - height: 200px; - width: 475px; -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/yahoo-dom-event.js b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/yahoo-dom-event.js deleted file mode 100644 index 46c58bf..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/yahoo-dom-event.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Copyright (c) 2011, Yahoo! Inc. All rights reserved. -Code licensed under the BSD License: -http://developer.yahoo.com/yui/license.html -version: 2.9.0 -*/ -if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var b=arguments,g=null,e,c,f;for(e=0;e":">",'"':""","'":"'","/":"/","`":"`"},d=["toString","valueOf"],e={isArray:function(j){return a.toString.apply(j)===c;},isBoolean:function(j){return typeof j==="boolean";},isFunction:function(j){return(typeof j==="function")||a.toString.apply(j)===h;},isNull:function(j){return j===null;},isNumber:function(j){return typeof j==="number"&&isFinite(j);},isObject:function(j){return(j&&(typeof j==="object"||f.isFunction(j)))||false;},isString:function(j){return typeof j==="string";},isUndefined:function(j){return typeof j==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(l,k){var j,n,m;for(j=0;j"'\/`]/g,function(k){return g[k];});},extend:function(m,n,l){if(!n||!m){throw new Error("extend failed, please check that "+"all dependencies are included.");}var k=function(){},j;k.prototype=n.prototype;m.prototype=new k();m.prototype.constructor=m;m.superclass=n.prototype;if(n.prototype.constructor==a.constructor){n.prototype.constructor=n;}if(l){for(j in l){if(f.hasOwnProperty(l,j)){m.prototype[j]=l[j];}}f._IEEnumFix(m.prototype,l);}},augmentObject:function(n,m){if(!m||!n){throw new Error("Absorb failed, verify dependencies.");}var j=arguments,l,o,k=j[2];if(k&&k!==true){for(l=2;l0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}if(r.length>1){r.pop();}r.push("]");}else{r.push("{");for(l in j){if(f.hasOwnProperty(j,l)){r.push(l+m);if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}}if(r.length>1){r.pop();}r.push("}");}return r.join("");},substitute:function(x,y,E,l){var D,C,B,G,t,u,F=[],p,z=x.length,A="dump",r=" ",q="{",m="}",n,w;for(;;){D=x.lastIndexOf(q,z);if(D<0){break;}C=x.indexOf(m,D);if(D+1>C){break;}p=x.substring(D+1,C);G=p;u=null;B=G.indexOf(r);if(B>-1){u=G.substring(B+1);G=G.substring(0,B);}t=y[G];if(E){t=E(G,t,u);}if(f.isObject(t)){if(f.isArray(t)){t=f.dump(t,parseInt(u,10));}else{u=u||"";n=u.indexOf(A);if(n>-1){u=u.substring(4);}w=t.toString();if(w===i||n>-1){t=f.dump(t,parseInt(u,10));}else{t=w;}}}else{if(!f.isString(t)&&!f.isNumber(t)){t="~-"+F.length+"-~";F[F.length]=p;}}x=x.substring(0,D)+t+x.substring(C+1);if(l===false){z=D-1;}}for(D=F.length-1;D>=0;D=D-1){x=x.replace(new RegExp("~-"+D+"-~"),"{"+F[D]+"}","g");}return x;},trim:function(j){try{return j.replace(/^\s+|\s+$/g,"");}catch(k){return j; -}},merge:function(){var n={},k=arguments,j=k.length,m;for(m=0;m-1;}}else{}return G;},addClass:function(W,G){return e.Dom.batch(W,e.Dom._addClass,G);},_addClass:function(X,W){var G=false,Y;if(X&&W){Y=e.Dom._getAttribute(X,f)||i;if(!e.Dom._hasClass(X,W)){e.Dom.setAttribute(X,f,a(Y+b+W));G=true;}}else{}return G;},removeClass:function(W,G){return e.Dom.batch(W,e.Dom._removeClass,G);},_removeClass:function(Y,X){var W=false,aa,Z,G;if(Y&&X){aa=e.Dom._getAttribute(Y,f)||i;e.Dom.setAttribute(Y,f,aa.replace(e.Dom._getClassRegex(X),i));Z=e.Dom._getAttribute(Y,f);if(aa!==Z){e.Dom.setAttribute(Y,f,a(Z));W=true;if(e.Dom._getAttribute(Y,f)===""){G=(Y.hasAttribute&&Y.hasAttribute(E))?E:f;Y.removeAttribute(G);}}}else{}return W;},replaceClass:function(X,W,G){return e.Dom.batch(X,e.Dom._replaceClass,{from:W,to:G});},_replaceClass:function(Y,X){var W,ab,aa,G=false,Z;if(Y&&X){ab=X.from;aa=X.to;if(!aa){G=false;}else{if(!ab){G=e.Dom._addClass(Y,X.to);}else{if(ab!==aa){Z=e.Dom._getAttribute(Y,f)||i;W=(b+Z.replace(e.Dom._getClassRegex(ab),b+aa).replace(/\s+/g,b)).split(e.Dom._getClassRegex(aa));W.splice(1,0,b+aa);e.Dom.setAttribute(Y,f,a(W.join(i)));G=true;}}}}else{}return G;},generateId:function(G,X){X=X||"yui-gen";var W=function(Y){if(Y&&Y.id){return Y.id;}var Z=X+YAHOO.env._id_counter++; -if(Y){if(Y[C]&&Y[C].getElementById(Z)){return e.Dom.generateId(Y,Z+X);}Y.id=Z;}return Z;};return e.Dom.batch(G,W,e.Dom,true)||W.apply(e.Dom,arguments);},isAncestor:function(W,X){W=e.Dom.get(W);X=e.Dom.get(X);var G=false;if((W&&X)&&(W[K]&&X[K])){if(W.contains&&W!==X){G=W.contains(X);}else{if(W.compareDocumentPosition){G=!!(W.compareDocumentPosition(X)&16);}}}else{}return G;},inDocument:function(G,W){return e.Dom._inDoc(e.Dom.get(G),W);},_inDoc:function(W,X){var G=false;if(W&&W[c]){X=X||W[C];G=e.Dom.isAncestor(X[U],W);}else{}return G;},getElementsBy:function(W,af,ab,ad,X,ac,ae){af=af||"*";ab=(ab)?e.Dom.get(ab):null||j;var aa=(ae)?null:[],G;if(ab){G=ab.getElementsByTagName(af);for(var Y=0,Z=G.length;Y=8){e.Dom.DOT_ATTRIBUTES.type=true;}})();YAHOO.util.Region=function(d,e,a,c){this.top=d;this.y=d;this[1]=d;this.right=e;this.bottom=a;this.left=c;this.x=c;this[0]=c;this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(a){return(a.left>=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(f){var d=Math.max(this.top,f.top),e=Math.min(this.right,f.right),a=Math.min(this.bottom,f.bottom),c=Math.max(this.left,f.left); -if(a>=d&&e>=c){return new YAHOO.util.Region(d,e,a,c);}else{return null;}};YAHOO.util.Region.prototype.union=function(f){var d=Math.min(this.top,f.top),e=Math.max(this.right,f.right),a=Math.max(this.bottom,f.bottom),c=Math.min(this.left,f.left);return new YAHOO.util.Region(d,e,a,c);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(e){var g=YAHOO.util.Dom.getXY(e),d=g[1],f=g[0]+e.offsetWidth,a=g[1]+e.offsetHeight,c=g[0];return new YAHOO.util.Region(d,f,a,c);};YAHOO.util.Point=function(a,b){if(YAHOO.lang.isArray(a)){b=a[1];a=a[0];}YAHOO.util.Point.superclass.constructor.call(this,b,a,b,a);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var b=YAHOO.util,a="clientTop",f="clientLeft",j="parentNode",k="right",w="hasLayout",i="px",u="opacity",l="auto",d="borderLeftWidth",g="borderTopWidth",p="borderRightWidth",v="borderBottomWidth",s="visible",q="transparent",n="height",e="width",h="style",t="currentStyle",r=/^width|height$/,o=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,m={get:function(x,z){var y="",A=x[t][z];if(z===u){y=b.Dom.getStyle(x,u);}else{if(!A||(A.indexOf&&A.indexOf(i)>-1)){y=A;}else{if(b.Dom.IE_COMPUTED[z]){y=b.Dom.IE_COMPUTED[z](x,z);}else{if(o.test(A)){y=b.Dom.IE.ComputedStyle.getPixel(x,z);}else{y=A;}}}}return y;},getOffset:function(z,E){var B=z[t][E],x=E.charAt(0).toUpperCase()+E.substr(1),C="offset"+x,y="pixel"+x,A="",D;if(B==l){D=z[C];if(D===undefined){A=0;}A=D;if(r.test(E)){z[h][E]=D;if(z[C]>D){A=D-(z[C]-D);}z[h][E]=l;}}else{if(!z[h][y]&&!z[h][E]){z[h][E]=B;}A=z[h][y];}return A+i;},getBorderWidth:function(x,z){var y=null;if(!x[t][w]){x[h].zoom=1;}switch(z){case g:y=x[a];break;case v:y=x.offsetHeight-x.clientHeight-x[a];break;case d:y=x[f];break;case p:y=x.offsetWidth-x.clientWidth-x[f];break;}return y+i;},getPixel:function(y,x){var A=null,B=y[t][k],z=y[t][x];y[h][k]=z;A=y[h].pixelRight;y[h][k]=B;return A+i;},getMargin:function(y,x){var z;if(y[t][x]==l){z=0+i;}else{z=b.Dom.IE.ComputedStyle.getPixel(y,x);}return z;},getVisibility:function(y,x){var z;while((z=y[t])&&z[x]=="inherit"){y=y[j];}return(z)?z[x]:s;},getColor:function(y,x){return b.Dom.Color.toRGB(y[t][x])||q;},getBorderColor:function(y,x){var z=y[t],A=z[x]||z.color;return b.Dom.Color.toRGB(b.Dom.Color.toHex(A));}},c={};c.top=c.right=c.bottom=c.left=c[e]=c[n]=m.getOffset;c.color=m.getColor;c[g]=c[p]=c[v]=c[d]=m.getBorderWidth;c.marginTop=c.marginRight=c.marginBottom=c.marginLeft=m.getMargin;c.visibility=m.getVisibility;c.borderColor=c.borderTopColor=c.borderRightColor=c.borderBottomColor=c.borderLeftColor=m.getBorderColor;b.Dom.IE_COMPUTED=c;b.Dom.IE_ComputedStyle=m;})();(function(){var c="toString",a=parseInt,b=RegExp,d=YAHOO.util;d.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(e){if(!d.Dom.Color.re_RGB.test(e)){e=d.Dom.Color.toHex(e);}if(d.Dom.Color.re_hex.exec(e)){e="rgb("+[a(b.$1,16),a(b.$2,16),a(b.$3,16)].join(", ")+")";}return e;},toHex:function(f){f=d.Dom.Color.KEYWORDS[f]||f;if(d.Dom.Color.re_RGB.exec(f)){f=[Number(b.$1).toString(16),Number(b.$2).toString(16),Number(b.$3).toString(16)];for(var e=0;e0){i=c[0];}try{b=g.fn.call(f,i,g.obj);}catch(h){this.lastError=h;if(a){throw h;}}}else{try{b=g.fn.call(f,this.type,c,g.obj);}catch(d){this.lastError=d;if(a){throw d;}}}return b;},unsubscribeAll:function(){var a=this.subscribers.length,b;for(b=a-1;b>-1;b--){this._delete(b);}this.subscribers=[];return a;},_delete:function(a){var b=this.subscribers[a];if(b){delete b.fn;delete b.obj;}this.subscribers.splice(a,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(a,b,c){this.fn=a;this.obj=YAHOO.lang.isUndefined(b)?null:b;this.overrideContext=c;};YAHOO.util.Subscriber.prototype.getScope=function(a){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return a;};YAHOO.util.Subscriber.prototype.contains=function(a,b){if(b){return(this.fn==a&&this.obj==b);}else{return(this.fn==a);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var g=false,h=[],j=[],a=0,e=[],b=0,c={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9},d=YAHOO.env.ua.ie,f="focusin",i="focusout";return{POLL_RETRYS:500,POLL_INTERVAL:40,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:d,_interval:null,_dri:null,_specialTypes:{focusin:(d?"focusin":"focus"),focusout:(d?"focusout":"blur")},DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){this._interval=YAHOO.lang.later(this.POLL_INTERVAL,this,this._tryPreloadAttach,null,true);}},onAvailable:function(q,m,o,p,n){var k=(YAHOO.lang.isString(q))?[q]:q;for(var l=0;l-1;m--){s=(this.removeListener(l[m],k,r)&&s);}return s;}}if(!r||!r.call){return this.purgeElement(l,false,k);}if("unload"==k){for(m=j.length-1;m>-1;m--){u=j[m];if(u&&u[0]==l&&u[1]==k&&u[2]==r){j.splice(m,1);return true;}}return false;}var n=null;var o=arguments[3];if("undefined"===typeof o){o=this._getCacheIndex(h,l,k,r);}if(o>=0){n=h[o];}if(!l||!n){return false;}var t=n[this.CAPTURE]===true?true:false;try{this._simpleRemove(l,k,n[this.WFN],t);}catch(q){this.lastError=q;return false;}delete h[o][this.WFN];delete h[o][this.FN];h.splice(o,1);return true;},getTarget:function(m,l){var k=m.target||m.srcElement;return this.resolveTextNode(k);},resolveTextNode:function(l){try{if(l&&3==l.nodeType){return l.parentNode;}}catch(k){return null;}return l;},getPageX:function(l){var k=l.pageX;if(!k&&0!==k){k=l.clientX||0;if(this.isIE){k+=this._getScrollLeft();}}return k;},getPageY:function(k){var l=k.pageY;if(!l&&0!==l){l=k.clientY||0;if(this.isIE){l+=this._getScrollTop();}}return l;},getXY:function(k){return[this.getPageX(k),this.getPageY(k)];},getRelatedTarget:function(l){var k=l.relatedTarget; -if(!k){if(l.type=="mouseout"){k=l.toElement;}else{if(l.type=="mouseover"){k=l.fromElement;}}}return this.resolveTextNode(k);},getTime:function(m){if(!m.time){var l=new Date().getTime();try{m.time=l;}catch(k){this.lastError=k;return l;}}return m.time;},stopEvent:function(k){this.stopPropagation(k);this.preventDefault(k);},stopPropagation:function(k){if(k.stopPropagation){k.stopPropagation();}else{k.cancelBubble=true;}},preventDefault:function(k){if(k.preventDefault){k.preventDefault();}else{k.returnValue=false;}},getEvent:function(m,k){var l=m||window.event;if(!l){var n=this.getEvent.caller;while(n){l=n.arguments[0];if(l&&Event==l.constructor){break;}n=n.caller;}}return l;},getCharCode:function(l){var k=l.keyCode||l.charCode||0;if(YAHOO.env.ua.webkit&&(k in c)){k=c[k];}return k;},_getCacheIndex:function(n,q,r,p){for(var o=0,m=n.length;o0&&e.length>0);}var p=[];var r=function(t,u){var s=t;if(u.overrideContext){if(u.overrideContext===true){s=u.obj;}else{s=u.overrideContext;}}u.fn.call(s,u.obj);};var l,k,o,n,m=[];for(l=0,k=e.length;l-1;l--){o=e[l];if(!o||!o.id){e.splice(l,1);}}this.startInterval();}else{if(this._interval){this._interval.cancel();this._interval=null;}}this.locked=false;},purgeElement:function(p,q,s){var n=(YAHOO.lang.isString(p))?this.getEl(p):p;var r=this.getListeners(n,s),o,k;if(r){for(o=r.length-1;o>-1;o--){var m=r[o];this.removeListener(n,m.type,m.fn);}}if(q&&n&&n.childNodes){for(o=0,k=n.childNodes.length;o-1;o--){n=h[o];if(n){try{m.removeListener(n[m.EL],n[m.TYPE],n[m.FN],o);}catch(v){}}}n=null;}try{m._simpleRemove(window,"unload",m._unload);m._simpleRemove(window,"load",m._load);}catch(u){}},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var k=document.documentElement,l=document.body;if(k&&(k.scrollTop||k.scrollLeft)){return[k.scrollTop,k.scrollLeft];}else{if(l){return[l.scrollTop,l.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(m,n,l,k){m.addEventListener(n,l,(k));};}else{if(window.attachEvent){return function(m,n,l,k){m.attachEvent("on"+n,l);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(m,n,l,k){m.removeEventListener(n,l,(k));};}else{if(window.detachEvent){return function(l,m,k){l.detachEvent("on"+m,k);};}else{return function(){};}}}()};}();(function(){var a=YAHOO.util.Event;a.on=a.addListener;a.onFocus=a.addFocusListener;a.onBlur=a.addBlurListener; -/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */ -if(a.isIE){if(self!==self.top){document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;a._ready();}};}else{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var b=document.createElement("p");a._dri=setInterval(function(){try{b.doScroll("left");clearInterval(a._dri);a._dri=null;a._ready();b=null;}catch(c){}},a.POLL_INTERVAL);}}else{if(a.webkit&&a.webkit<525){a._dri=setInterval(function(){var c=document.readyState;if("loaded"==c||"complete"==c){clearInterval(a._dri);a._dri=null;a._ready();}},a.POLL_INTERVAL);}else{a._simpleAdd(document,"DOMContentLoaded",a._ready);}}a._simpleAdd(window,"load",a._load);a._simpleAdd(window,"unload",a._unload);a._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(a,c,f,e){this.__yui_events=this.__yui_events||{};var d=this.__yui_events[a];if(d){d.subscribe(c,f,e);}else{this.__yui_subscribers=this.__yui_subscribers||{};var b=this.__yui_subscribers;if(!b[a]){b[a]=[];}b[a].push({fn:c,obj:f,overrideContext:e});}},unsubscribe:function(c,e,g){this.__yui_events=this.__yui_events||{};var a=this.__yui_events;if(c){var f=a[c];if(f){return f.unsubscribe(e,g);}}else{var b=true;for(var d in a){if(YAHOO.lang.hasOwnProperty(a,d)){b=b&&a[d].unsubscribe(e,g); -}}return b;}return false;},unsubscribeAll:function(a){return this.unsubscribe(a);},createEvent:function(b,g){this.__yui_events=this.__yui_events||{};var e=g||{},d=this.__yui_events,f;if(d[b]){}else{f=new YAHOO.util.CustomEvent(b,e.scope||this,e.silent,YAHOO.util.CustomEvent.FLAT,e.fireOnce);d[b]=f;if(e.onSubscribeCallback){f.subscribeEvent.subscribe(e.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var a=this.__yui_subscribers[b];if(a){for(var c=0;c{tests}", - "footer": "" - }, diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node.php deleted file mode 100644 index 0c0f3c5..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node.php +++ /dev/null @@ -1,332 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Base class for nodes in the code coverage information tree. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -abstract class PHP_CodeCoverage_Report_Node implements Countable -{ - /** - * @var string - */ - protected $name; - - /** - * @var string - */ - protected $path; - - /** - * @var array - */ - protected $pathArray; - - /** - * @var PHP_CodeCoverage_Report_Node - */ - protected $parent; - - /** - * @var string - */ - protected $id; - - /** - * Constructor. - * - * @param string $name - * @param PHP_CodeCoverage_Report_Node $parent - */ - public function __construct($name, PHP_CodeCoverage_Report_Node $parent = NULL) - { - if (substr($name, -1) == '/') { - $name = substr($name, 0, -1); - } - - $this->name = $name; - $this->parent = $parent; - } - - /** - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * @return string - */ - public function getId() - { - if ($this->id === NULL) { - $parent = $this->getParent(); - - if ($parent === NULL) { - $this->id = 'index'; - } else { - $parentId = $parent->getId(); - - if ($parentId == 'index') { - $this->id = str_replace(':', '_', $this->name); - } else { - $this->id = $parentId . '_' . $this->name; - } - } - } - - return $this->id; - } - - /** - * @return string - */ - public function getPath() - { - if ($this->path === NULL) { - if ($this->parent === NULL) { - $this->path = $this->name; - } else { - $this->path = $this->parent->getPath() . '/' . $this->name; - } - } - - return $this->path; - } - - /** - * @return array - */ - public function getPathAsArray() - { - if ($this->pathArray === NULL) { - if ($this->parent === NULL) { - $this->pathArray = array(); - } else { - $this->pathArray = $this->parent->getPathAsArray(); - } - - $this->pathArray[] = $this; - } - - return $this->pathArray; - } - - /** - * @return PHP_CodeCoverage_Report_Node - */ - public function getParent() - { - return $this->parent; - } - - /** - * Returns the percentage of classes that has been tested. - * - * @param boolean $asString - * @return integer - */ - public function getTestedClassesPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumTestedClasses(), - $this->getNumClasses(), - $asString - ); - } - - /** - * Returns the percentage of traits that has been tested. - * - * @param boolean $asString - * @return integer - */ - public function getTestedTraitsPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumTestedTraits(), - $this->getNumTraits(), - $asString - ); - } - - /** - * Returns the percentage of methods that has been tested. - * - * @param boolean $asString - * @return integer - */ - public function getTestedMethodsPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumTestedMethods(), - $this->getNumMethods(), - $asString - ); - } - - /** - * Returns the percentage of executed lines. - * - * @param boolean $asString - * @return integer - */ - public function getLineExecutedPercent($asString = TRUE) - { - return PHP_CodeCoverage_Util::percent( - $this->getNumExecutedLines(), - $this->getNumExecutableLines(), - $asString - ); - } - - /** - * Returns the classes of this node. - * - * @return array - */ - abstract public function getClasses(); - - /** - * Returns the traits of this node. - * - * @return array - */ - abstract public function getTraits(); - - /** - * Returns the functions of this node. - * - * @return array - */ - abstract public function getFunctions(); - - /** - * Returns the LOC/CLOC/NCLOC of this node. - * - * @return array - */ - abstract public function getLinesOfCode(); - - /** - * Returns the number of executable lines. - * - * @return integer - */ - abstract public function getNumExecutableLines(); - - /** - * Returns the number of executed lines. - * - * @return integer - */ - abstract public function getNumExecutedLines(); - - /** - * Returns the number of classes. - * - * @return integer - */ - abstract public function getNumClasses(); - - /** - * Returns the number of tested classes. - * - * @return integer - */ - abstract public function getNumTestedClasses(); - - /** - * Returns the number of traits. - * - * @return integer - */ - abstract public function getNumTraits(); - - /** - * Returns the number of tested traits. - * - * @return integer - */ - abstract public function getNumTestedTraits(); - - /** - * Returns the number of methods. - * - * @return integer - */ - abstract public function getNumMethods(); - - /** - * Returns the number of tested methods. - * - * @return integer - */ - abstract public function getNumTestedMethods(); - - /** - * Returns the number of functions. - * - * @return integer - */ - abstract public function getNumFunctions(); - - /** - * Returns the number of tested functions. - * - * @return integer - */ - abstract public function getNumTestedFunctions(); -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Directory.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Directory.php deleted file mode 100644 index 8826693..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Directory.php +++ /dev/null @@ -1,513 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Represents a directory in the code coverage information tree. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Node_Directory extends PHP_CodeCoverage_Report_Node implements IteratorAggregate -{ - /** - * @var PHP_CodeCoverage_Report_Node[] - */ - protected $children = array(); - - /** - * @var PHP_CodeCoverage_Report_Node_Directory[] - */ - protected $directories = array(); - - /** - * @var PHP_CodeCoverage_Report_Node_File[] - */ - protected $files = array(); - - /** - * @var array - */ - protected $classes; - - /** - * @var array - */ - protected $traits; - - /** - * @var array - */ - protected $functions; - - /** - * @var array - */ - protected $linesOfCode = NULL; - - /** - * @var integer - */ - protected $numFiles = -1; - - /** - * @var integer - */ - protected $numExecutableLines = -1; - - /** - * @var integer - */ - protected $numExecutedLines = -1; - - /** - * @var integer - */ - protected $numClasses = -1; - - /** - * @var integer - */ - protected $numTestedClasses = -1; - - /** - * @var integer - */ - protected $numTraits = -1; - - /** - * @var integer - */ - protected $numTestedTraits = -1; - - /** - * @var integer - */ - protected $numMethods = -1; - - /** - * @var integer - */ - protected $numTestedMethods = -1; - - /** - * @var integer - */ - protected $numFunctions = -1; - - /** - * @var integer - */ - protected $numTestedFunctions = -1; - - /** - * Returns the number of files in/under this node. - * - * @return integer - */ - public function count() - { - if ($this->numFiles == -1) { - $this->numFiles = 0; - - foreach ($this->children as $child) { - $this->numFiles += count($child); - } - } - - return $this->numFiles; - } - - /** - * Returns an iterator for this node. - * - * @return RecursiveIteratorIterator - */ - public function getIterator() - { - return new RecursiveIteratorIterator( - new PHP_CodeCoverage_Report_Node_Iterator($this), - RecursiveIteratorIterator::SELF_FIRST - ); - } - - /** - * Adds a new directory. - * - * @param string $name - * @return PHP_CodeCoverage_Report_Node_Directory - */ - public function addDirectory($name) - { - $directory = new PHP_CodeCoverage_Report_Node_Directory($name, $this); - - $this->children[] = $directory; - $this->directories[] = &$this->children[count($this->children) - 1]; - - return $directory; - } - - /** - * Adds a new file. - * - * @param string $name - * @param array $coverageData - * @param array $testData - * @param boolean $cacheTokens - * @return PHP_CodeCoverage_Report_Node_File - * @throws PHP_CodeCoverage_Exception - */ - public function addFile($name, array $coverageData, array $testData, $cacheTokens) - { - $file = new PHP_CodeCoverage_Report_Node_File( - $name, $this, $coverageData, $testData, $cacheTokens - ); - - $this->children[] = $file; - $this->files[] = &$this->children[count($this->children) - 1]; - - $this->numExecutableLines = -1; - $this->numExecutedLines = -1; - - return $file; - } - - /** - * Returns the directories in this directory. - * - * @return array - */ - public function getDirectories() - { - return $this->directories; - } - - /** - * Returns the files in this directory. - * - * @return array - */ - public function getFiles() - { - return $this->files; - } - - /** - * Returns the child nodes of this node. - * - * @return array - */ - public function getChildNodes() - { - return $this->children; - } - - /** - * Returns the classes of this node. - * - * @return array - */ - public function getClasses() - { - if ($this->classes === NULL) { - $this->classes = array(); - - foreach ($this->children as $child) { - $this->classes = array_merge( - $this->classes, $child->getClasses() - ); - } - } - - return $this->classes; - } - - /** - * Returns the traits of this node. - * - * @return array - */ - public function getTraits() - { - if ($this->traits === NULL) { - $this->traits = array(); - - foreach ($this->children as $child) { - $this->traits = array_merge( - $this->traits, $child->getTraits() - ); - } - } - - return $this->traits; - } - - /** - * Returns the functions of this node. - * - * @return array - */ - public function getFunctions() - { - if ($this->functions === NULL) { - $this->functions = array(); - - foreach ($this->children as $child) { - $this->functions = array_merge( - $this->functions, $child->getFunctions() - ); - } - } - - return $this->functions; - } - - /** - * Returns the LOC/CLOC/NCLOC of this node. - * - * @return array - */ - public function getLinesOfCode() - { - if ($this->linesOfCode === NULL) { - $this->linesOfCode = array('loc' => 0, 'cloc' => 0, 'ncloc' => 0); - - foreach ($this->children as $child) { - $linesOfCode = $child->getLinesOfCode(); - - $this->linesOfCode['loc'] += $linesOfCode['loc']; - $this->linesOfCode['cloc'] += $linesOfCode['cloc']; - $this->linesOfCode['ncloc'] += $linesOfCode['ncloc']; - } - } - - return $this->linesOfCode; - } - - /** - * Returns the number of executable lines. - * - * @return integer - */ - public function getNumExecutableLines() - { - if ($this->numExecutableLines == -1) { - $this->numExecutableLines = 0; - - foreach ($this->children as $child) { - $this->numExecutableLines += $child->getNumExecutableLines(); - } - } - - return $this->numExecutableLines; - } - - /** - * Returns the number of executed lines. - * - * @return integer - */ - public function getNumExecutedLines() - { - if ($this->numExecutedLines == -1) { - $this->numExecutedLines = 0; - - foreach ($this->children as $child) { - $this->numExecutedLines += $child->getNumExecutedLines(); - } - } - - return $this->numExecutedLines; - } - - /** - * Returns the number of classes. - * - * @return integer - */ - public function getNumClasses() - { - if ($this->numClasses == -1) { - $this->numClasses = 0; - - foreach ($this->children as $child) { - $this->numClasses += $child->getNumClasses(); - } - } - - return $this->numClasses; - } - - /** - * Returns the number of tested classes. - * - * @return integer - */ - public function getNumTestedClasses() - { - if ($this->numTestedClasses == -1) { - $this->numTestedClasses = 0; - - foreach ($this->children as $child) { - $this->numTestedClasses += $child->getNumTestedClasses(); - } - } - - return $this->numTestedClasses; - } - - /** - * Returns the number of traits. - * - * @return integer - */ - public function getNumTraits() - { - if ($this->numTraits == -1) { - $this->numTraits = 0; - - foreach ($this->children as $child) { - $this->numTraits += $child->getNumTraits(); - } - } - - return $this->numTraits; - } - - /** - * Returns the number of tested traits. - * - * @return integer - */ - public function getNumTestedTraits() - { - if ($this->numTestedTraits == -1) { - $this->numTestedTraits = 0; - - foreach ($this->children as $child) { - $this->numTestedTraits += $child->getNumTestedTraits(); - } - } - - return $this->numTestedTraits; - } - - /** - * Returns the number of methods. - * - * @return integer - */ - public function getNumMethods() - { - if ($this->numMethods == -1) { - $this->numMethods = 0; - - foreach ($this->children as $child) { - $this->numMethods += $child->getNumMethods(); - } - } - - return $this->numMethods; - } - - /** - * Returns the number of tested methods. - * - * @return integer - */ - public function getNumTestedMethods() - { - if ($this->numTestedMethods == -1) { - $this->numTestedMethods = 0; - - foreach ($this->children as $child) { - $this->numTestedMethods += $child->getNumTestedMethods(); - } - } - - return $this->numTestedMethods; - } - - /** - * Returns the number of functions. - * - * @return integer - */ - public function getNumFunctions() - { - if ($this->numFunctions == -1) { - $this->numFunctions = 0; - - foreach ($this->children as $child) { - $this->numFunctions += $child->getNumFunctions(); - } - } - - return $this->numFunctions; - } - - /** - * Returns the number of tested functions. - * - * @return integer - */ - public function getNumTestedFunctions() - { - if ($this->numTestedFunctions == -1) { - $this->numTestedFunctions = 0; - - foreach ($this->children as $child) { - $this->numTestedFunctions += $child->getNumTestedFunctions(); - } - } - - return $this->numTestedFunctions; - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/File.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/File.php deleted file mode 100644 index 2f42f17..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/File.php +++ /dev/null @@ -1,695 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Represents a file in the code coverage information tree. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Node_File extends PHP_CodeCoverage_Report_Node -{ - /** - * @var array - */ - protected $coverageData; - - /** - * @var array - */ - protected $testData; - - /** - * @var array - */ - protected $ignoredLines; - - /** - * @var integer - */ - protected $numExecutableLines = 0; - - /** - * @var integer - */ - protected $numExecutedLines = 0; - - /** - * @var array - */ - protected $classes = array(); - - /** - * @var array - */ - protected $traits = array(); - - /** - * @var array - */ - protected $functions = array(); - - /** - * @var array - */ - protected $linesOfCode = array(); - - /** - * @var integer - */ - protected $numTestedTraits = 0; - - /** - * @var integer - */ - protected $numTestedClasses = 0; - - /** - * @var integer - */ - protected $numMethods = NULL; - - /** - * @var integer - */ - protected $numTestedMethods = NULL; - - /** - * @var integer - */ - protected $numTestedFunctions = NULL; - - /** - * @var array - */ - protected $startLines = array(); - - /** - * @var array - */ - protected $endLines = array(); - - /** - * @var boolean - */ - protected $cacheTokens; - - /** - * Constructor. - * - * @param string $name - * @param PHP_CodeCoverage_Report_Node $parent - * @param array $coverageData - * @param array $testData - * @param boolean $cacheTokens - */ - public function __construct($name, PHP_CodeCoverage_Report_Node $parent, array $coverageData, array $testData, $cacheTokens) - { - if (!is_bool($cacheTokens)) { - throw new InvalidArgumentException; - } - - parent::__construct($name, $parent); - - $this->coverageData = $coverageData; - $this->testData = $testData; - $this->ignoredLines = PHP_CodeCoverage_Util::getLinesToBeIgnored( - $this->getPath(), $cacheTokens - ); - $this->cacheTokens = $cacheTokens; - - $this->calculateStatistics(); - } - - /** - * Returns the number of files in/under this node. - * - * @return integer - */ - public function count() - { - return 1; - } - - /** - * Returns the code coverage data of this node. - * - * @return array - */ - public function getCoverageData() - { - return $this->coverageData; - } - - /** - * Returns the test data of this node. - * - * @return array - */ - public function getTestData() - { - return $this->testData; - } - - /** - * @return array - */ - public function getIgnoredLines() - { - return $this->ignoredLines; - } - - /** - * Returns the classes of this node. - * - * @return array - */ - public function getClasses() - { - return $this->classes; - } - - /** - * Returns the traits of this node. - * - * @return array - */ - public function getTraits() - { - return $this->traits; - } - - /** - * Returns the functions of this node. - * - * @return array - */ - public function getFunctions() - { - return $this->functions; - } - - /** - * Returns the LOC/CLOC/NCLOC of this node. - * - * @return array - */ - public function getLinesOfCode() - { - return $this->linesOfCode; - } - - /** - * Returns the number of executable lines. - * - * @return integer - */ - public function getNumExecutableLines() - { - return $this->numExecutableLines; - } - - /** - * Returns the number of executed lines. - * - * @return integer - */ - public function getNumExecutedLines() - { - return $this->numExecutedLines; - } - - /** - * Returns the number of classes. - * - * @return integer - */ - public function getNumClasses() - { - return count($this->classes); - } - - /** - * Returns the number of tested classes. - * - * @return integer - */ - public function getNumTestedClasses() - { - return $this->numTestedClasses; - } - - /** - * Returns the number of traits. - * - * @return integer - */ - public function getNumTraits() - { - return count($this->traits); - } - - /** - * Returns the number of tested traits. - * - * @return integer - */ - public function getNumTestedTraits() - { - return $this->numTestedTraits; - } - - /** - * Returns the number of methods. - * - * @return integer - */ - public function getNumMethods() - { - if ($this->numMethods === NULL) { - $this->numMethods = 0; - - foreach ($this->classes as $class) { - foreach ($class['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numMethods++; - } - } - } - - foreach ($this->traits as $trait) { - foreach ($trait['methods'] as $method) { - if ($method['executableLines'] > 0) { - $this->numMethods++; - } - } - } - } - - return $this->numMethods; - } - - /** - * Returns the number of tested methods. - * - * @return integer - */ - public function getNumTestedMethods() - { - if ($this->numTestedMethods === NULL) { - $this->numTestedMethods = 0; - - foreach ($this->classes as $class) { - foreach ($class['methods'] as $method) { - if ($method['executableLines'] > 0 && - $method['coverage'] == 100) { - $this->numTestedMethods++; - } - } - } - - foreach ($this->traits as $trait) { - foreach ($trait['methods'] as $method) { - if ($method['executableLines'] > 0 && - $method['coverage'] == 100) { - $this->numTestedMethods++; - } - } - } - } - - return $this->numTestedMethods; - } - - /** - * Returns the number of functions. - * - * @return integer - */ - public function getNumFunctions() - { - return count($this->functions); - } - - /** - * Returns the number of tested functions. - * - * @return integer - */ - public function getNumTestedFunctions() - { - if ($this->numTestedFunctions === NULL) { - $this->numTestedFunctions = 0; - - foreach ($this->functions as $function) { - if ($function['executableLines'] > 0 && - $function['coverage'] == 100) { - $this->numTestedFunctions++; - } - } - } - - return $this->numTestedFunctions; - } - - /** - * Calculates coverage statistics for the file. - */ - protected function calculateStatistics() - { - if ($this->cacheTokens) { - $tokens = PHP_Token_Stream_CachingFactory::get($this->getPath()); - } else { - $tokens = new PHP_Token_Stream($this->getPath()); - } - - $this->processClasses($tokens); - $this->processTraits($tokens); - $this->processFunctions($tokens); - $this->linesOfCode = $tokens->getLinesOfCode(); - unset($tokens); - - for ($lineNumber = 1; $lineNumber <= $this->linesOfCode['loc']; $lineNumber++) { - if (isset($this->startLines[$lineNumber])) { - // Start line of a class. - if (isset($this->startLines[$lineNumber]['className'])) { - $currentClass = &$this->startLines[$lineNumber]; - } - - // Start line of a trait. - else if (isset($this->startLines[$lineNumber]['traitName'])) { - $currentTrait = &$this->startLines[$lineNumber]; - } - - // Start line of a method. - else if (isset($this->startLines[$lineNumber]['methodName'])) { - $currentMethod = &$this->startLines[$lineNumber]; - } - - // Start line of a function. - else if (isset($this->startLines[$lineNumber]['functionName'])) { - $currentFunction = &$this->startLines[$lineNumber]; - } - } - - if (!isset($this->ignoredLines[$lineNumber]) && - isset($this->coverageData[$lineNumber]) && - $this->coverageData[$lineNumber] !== NULL) { - if (isset($currentClass)) { - $currentClass['executableLines']++; - } - - if (isset($currentTrait)) { - $currentTrait['executableLines']++; - } - - if (isset($currentMethod)) { - $currentMethod['executableLines']++; - } - - if (isset($currentFunction)) { - $currentFunction['executableLines']++; - } - - $this->numExecutableLines++; - - if (count($this->coverageData[$lineNumber]) > 0 || - isset($this->ignoredLines[$lineNumber])) { - if (isset($currentClass)) { - $currentClass['executedLines']++; - } - - if (isset($currentTrait)) { - $currentTrait['executedLines']++; - } - - if (isset($currentMethod)) { - $currentMethod['executedLines']++; - } - - if (isset($currentFunction)) { - $currentFunction['executedLines']++; - } - - $this->numExecutedLines++; - } - } - - if (isset($this->endLines[$lineNumber])) { - // End line of a class. - if (isset($this->endLines[$lineNumber]['className'])) { - unset($currentClass); - } - - // End line of a trait. - else if (isset($this->endLines[$lineNumber]['traitName'])) { - unset($currentTrait); - } - - // End line of a method. - else if (isset($this->endLines[$lineNumber]['methodName'])) { - unset($currentMethod); - } - - // End line of a function. - else if (isset($this->endLines[$lineNumber]['functionName'])) { - unset($currentFunction); - } - } - } - - foreach ($this->traits as $traitName => &$trait) { - foreach ($trait['methods'] as &$method) { - if ($method['executableLines'] > 0) { - $method['coverage'] = ($method['executedLines'] / - $method['executableLines']) * 100; - } else { - $method['coverage'] = 100; - } - - $method['crap'] = PHP_CodeCoverage_Util::crap( - $method['ccn'], $method['coverage'] - ); - - $trait['ccn'] += $method['ccn']; - } - - if ($trait['executableLines'] > 0) { - $trait['coverage'] = ($trait['executedLines'] / - $trait['executableLines']) * 100; - } else { - $trait['coverage'] = 100; - } - - if ($trait['coverage'] == 100) { - $this->numTestedClasses++; - } - - $trait['crap'] = PHP_CodeCoverage_Util::crap( - $trait['ccn'], $trait['coverage'] - ); - } - - foreach ($this->classes as $className => &$class) { - foreach ($class['methods'] as &$method) { - if ($method['executableLines'] > 0) { - $method['coverage'] = ($method['executedLines'] / - $method['executableLines']) * 100; - } else { - $method['coverage'] = 100; - } - - $method['crap'] = PHP_CodeCoverage_Util::crap( - $method['ccn'], $method['coverage'] - ); - - $class['ccn'] += $method['ccn']; - } - - if ($class['executableLines'] > 0) { - $class['coverage'] = ($class['executedLines'] / - $class['executableLines']) * 100; - } else { - $class['coverage'] = 100; - } - - if ($class['coverage'] == 100) { - $this->numTestedClasses++; - } - - $class['crap'] = PHP_CodeCoverage_Util::crap( - $class['ccn'], $class['coverage'] - ); - } - } - - /** - * @param PHP_Token_Stream $tokens - */ - protected function processClasses(PHP_Token_Stream $tokens) - { - $classes = $tokens->getClasses(); - unset($tokens); - - $link = $this->getId() . '.html#'; - - foreach ($classes as $className => $class) { - $this->classes[$className] = array( - 'className' => $className, - 'methods' => array(), - 'startLine' => $class['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => 0, - 'coverage' => 0, - 'crap' => 0, - 'package' => $class['package'], - 'link' => $link . $class['startLine'] - ); - - $this->startLines[$class['startLine']] = &$this->classes[$className]; - $this->endLines[$class['endLine']] = &$this->classes[$className]; - - foreach ($class['methods'] as $methodName => $method) { - $this->classes[$className]['methods'][$methodName] = array( - 'methodName' => $methodName, - 'signature' => $method['signature'], - 'startLine' => $method['startLine'], - 'endLine' => $method['endLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => $method['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $method['startLine'] - ); - - $this->startLines[$method['startLine']] = &$this->classes[$className]['methods'][$methodName]; - $this->endLines[$method['endLine']] = &$this->classes[$className]['methods'][$methodName]; - } - } - } - - /** - * @param PHP_Token_Stream $tokens - */ - protected function processTraits(PHP_Token_Stream $tokens) - { - $traits = $tokens->getTraits(); - unset($tokens); - - $link = $this->getId() . '.html#'; - - foreach ($traits as $traitName => $trait) { - $this->traits[$traitName] = array( - 'traitName' => $traitName, - 'methods' => array(), - 'startLine' => $trait['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => 0, - 'coverage' => 0, - 'crap' => 0, - 'package' => $trait['package'], - 'link' => $link . $trait['startLine'] - ); - - $this->startLines[$trait['startLine']] = &$this->traits[$traitName]; - $this->endLines[$trait['endLine']] = &$this->traits[$traitName]; - - foreach ($trait['methods'] as $methodName => $method) { - $this->traits[$traitName]['methods'][$methodName] = array( - 'methodName' => $methodName, - 'signature' => $method['signature'], - 'startLine' => $method['startLine'], - 'endLine' => $method['endLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => $method['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $method['startLine'] - ); - - $this->startLines[$method['startLine']] = &$this->traits[$traitName]['methods'][$methodName]; - $this->endLines[$method['endLine']] = &$this->traits[$traitName]['methods'][$methodName]; - } - } - } - - /** - * @param PHP_Token_Stream $tokens - */ - protected function processFunctions(PHP_Token_Stream $tokens) - { - $functions = $tokens->getFunctions(); - unset($tokens); - - $link = $this->getId() . '.html#'; - - foreach ($functions as $functionName => $function) { - $this->functions[$functionName] = array( - 'functionName' => $functionName, - 'signature' => $function['signature'], - 'startLine' => $function['startLine'], - 'executableLines' => 0, - 'executedLines' => 0, - 'ccn' => $function['ccn'], - 'coverage' => 0, - 'crap' => 0, - 'link' => $link . $function['startLine'] - ); - - $this->startLines[$function['startLine']] = &$this->functions[$functionName]; - $this->endLines[$function['endLine']] = &$this->functions[$functionName]; - } - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Iterator.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Iterator.php deleted file mode 100644 index c77bbff..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Node/Iterator.php +++ /dev/null @@ -1,149 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Recursive iterator for PHP_CodeCoverage_Report_Node object graphs. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Node_Iterator implements RecursiveIterator -{ - /** - * @var integer - */ - protected $position; - - /** - * @var PHP_CodeCoverage_Report_Node[] - */ - protected $nodes; - - /** - * Constructor. - * - * @param PHP_CodeCoverage_Report_Node_Directory $node - */ - public function __construct(PHP_CodeCoverage_Report_Node_Directory $node) - { - $this->nodes = $node->getChildNodes(); - } - - /** - * Rewinds the Iterator to the first element. - * - */ - public function rewind() - { - $this->position = 0; - } - - /** - * Checks if there is a current element after calls to rewind() or next(). - * - * @return boolean - */ - public function valid() - { - return $this->position < count($this->nodes); - } - - /** - * Returns the key of the current element. - * - * @return integer - */ - public function key() - { - return $this->position; - } - - /** - * Returns the current element. - * - * @return PHPUnit_Framework_Test - */ - public function current() - { - return $this->valid() ? $this->nodes[$this->position] : NULL; - } - - /** - * Moves forward to next element. - * - */ - public function next() - { - $this->position++; - } - - /** - * Returns the sub iterator for the current element. - * - * @return PHP_CodeCoverage_Report_Node_Iterator - */ - public function getChildren() - { - return new PHP_CodeCoverage_Report_Node_Iterator( - $this->nodes[$this->position] - ); - } - - /** - * Checks whether the current element has children. - * - * @return boolean - */ - public function hasChildren() - { - return $this->nodes[$this->position] instanceof PHP_CodeCoverage_Report_Node_Directory; - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/PHP.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/PHP.php deleted file mode 100644 index eab4112..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/PHP.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Uses serialize() to write a PHP_CodeCoverage object to a file. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_PHP -{ - /** - * @param PHP_CodeCoverage $coverage - * @param string $target - * @return string - */ - public function process(PHP_CodeCoverage $coverage, $target = NULL) - { - $coverage = serialize($coverage); - - if ($target !== NULL) { - return file_put_contents($target, $coverage); - } else { - return $coverage; - } - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Text.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Text.php deleted file mode 100644 index beeb16d..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Report/Text.php +++ /dev/null @@ -1,286 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -/** - * Generates human readable output from an PHP_CodeCoverage object. - * - * The output gets put into a text file our written to the CLI. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_Text -{ - protected $outputStream; - protected $title; - protected $lowUpperBound; - protected $highLowerBound; - protected $showUncoveredFiles; - - protected $colors = array( - 'green' => "\x1b[30;42m", - 'yellow' => "\x1b[30;43m", - 'red' => "\x1b[37;41m", - 'header' => "\x1b[47;40m", - 'reset' => "\x1b[0m", - 'eol' => "\x1b[2K", - ); - - public function __construct(PHPUnit_Util_Printer $outputStream, $title, $lowUpperBound, $highLowerBound, $showUncoveredFiles) - { - $this->outputStream = $outputStream; - $this->title = $title; - $this->lowUpperBound = $lowUpperBound; - $this->highLowerBound = $highLowerBound; - $this->showUncoveredFiles = $showUncoveredFiles; - } - - /** - * @param PHP_CodeCoverage $coverage - * @param string $target - * @param string $name - * @return string - */ - public function process(PHP_CodeCoverage $coverage, $showColors = FALSE) - { - $output = ''; - $packages = array(); - $report = $coverage->getReport(); - unset($coverage); - - $colors = array( - 'header' => '', - 'classes' => '', - 'methods' => '', - 'lines' => '', - 'reset' => '', - 'eol' => '' - ); - - if ($showColors) { - $colors['classes'] = $this->getCoverageColor( - $report->getNumTestedClasses(), - $report->getNumClasses() - ); - $colors['methods'] = $this->getCoverageColor( - $report->getNumTestedMethods(), - $report->getNumMethods() - ); - $colors['lines'] = $this->getCoverageColor( - $report->getNumExecutedLines(), - $report->getNumExecutableLines() - ); - $colors['reset'] = $this->colors['reset']; - $colors['header'] = $this->colors['header']; - $colors['eol'] = $this->colors['eol']; - } - - $output .= PHP_EOL . PHP_EOL . - $colors['header'] . 'Code Coverage Report '; - - if ($this->title) { - $output .= 'for "' . $this->title . '"'; - } - - $output .= PHP_EOL . - date(' Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . - PHP_EOL; - - $output .= PHP_EOL . ' Summary: ' . PHP_EOL . $colors['reset'] - . $colors['classes'] . $colors['eol'] . ' Classes: ' . PHP_CodeCoverage_Util::percent($report->getNumTestedClasses(), $report->getNumClasses(), TRUE) - . ' (' . $report->getNumTestedClasses() . '/' . $report->getNumClasses() . ')' . PHP_EOL . $colors ['eol'] - . $colors['methods'] . $colors['eol'] . ' Methods: ' . PHP_CodeCoverage_Util::percent($report->getNumTestedMethods(), $report->getNumMethods(), TRUE) - . ' (' . $report->getNumTestedMethods() . '/' . $report->getNumMethods() . ')' . PHP_EOL . $colors ['eol'] - . $colors['lines'] . $colors['eol'] . ' Lines: ' . PHP_CodeCoverage_Util::percent($report->getNumExecutedLines(), $report->getNumExecutableLines(), TRUE) - . ' (' . $report->getNumExecutedLines() . '/' . $report->getNumExecutableLines() . ')' . PHP_EOL . $colors['reset'] . $colors ['eol']; - - $classCoverage = array(); - - foreach ($report as $item) { - if (!$item instanceof PHP_CodeCoverage_Report_Node_File) { - continue; - } - - $classes = array_merge($item->getClasses(), $item->getTraits()); - $coverage = $item->getCoverageData(); - $lines = array(); - $ignoredLines = $item->getIgnoredLines(); - - foreach ($classes as $className => $class) { - $classStatements = 0; - $coveredClassStatements = 0; - $coveredMethods = 0; - - foreach ($class['methods'] as $methodName => $method) { - $methodCount = 0; - $methodLines = 0; - $methodLinesCovered = 0; - - for ($i = $method['startLine']; - $i <= $method['endLine']; - $i++) { - if (isset($ignoredLines[$i])) { - continue; - } - - $add = TRUE; - $count = 0; - - if (isset($coverage[$i])) { - if ($coverage[$i] !== NULL) { - $classStatements++; - $methodLines++; - } else { - $add = FALSE; - } - - $count = count($coverage[$i]); - - if ($count > 0) { - $coveredClassStatements++; - $methodLinesCovered++; - } - } else { - $add = FALSE; - } - - $methodCount = max($methodCount, $count); - - if ($add) { - $lines[$i] = array( - 'count' => $count, 'type' => 'stmt' - ); - } - } - - if ($methodCount > 0) { - $coveredMethods++; - } - - } - - if (!empty($class['package']['namespace'])) { - $namespace = '\\' . $class['package']['namespace'] . '::'; - } - - else if (!empty($class['package']['fullPackage'])) { - $namespace = '@' . $class['package']['fullPackage'] . '::'; - } - - else { - $namespace = ''; - } - - $classCoverage[$namespace . $className] = array( - 'namespace' => $namespace, - 'className ' => $className, - 'methodsCovered' => $coveredMethods, - 'methodCount' => count($class['methods']), - 'statementsCovered' => $coveredClassStatements, - 'statementCount' => $classStatements, - ); - } - } - - ksort($classCoverage); - - $methodColor = ''; - $linesColor = ''; - $resetColor = ''; - - foreach ($classCoverage as $fullQualifiedPath => $classInfo) { - if ($classInfo['statementsCovered'] != 0 || - $this->showUncoveredFiles) { - - if ($showColors) { - $methodColor = $this->getCoverageColor($classInfo['methodsCovered'], $classInfo['methodCount']); - $linesColor = $this->getCoverageColor($classInfo['statementsCovered'], $classInfo['statementCount']); - $resetColor = $colors['reset']; - } - - $output .= PHP_EOL . $fullQualifiedPath . PHP_EOL - . ' ' . $methodColor . 'Methods: ' . $this->printCoverageCounts($classInfo['methodsCovered'], $classInfo['methodCount'], 2) . $resetColor . ' ' - . ' ' . $linesColor . 'Lines: ' . $this->printCoverageCounts($classInfo['statementsCovered'], $classInfo['statementCount'], 3) . $resetColor - ; - } - } - - $this->outputStream->write($output); - } - - protected function getCoverageColor($numberOfCoveredElements, $totalNumberOfElements) - { - $coverage = PHP_CodeCoverage_Util::percent( - $numberOfCoveredElements, $totalNumberOfElements - ); - - if ($coverage > $this->highLowerBound) { - return $this->colors['green']; - } - - else if ($coverage > $this->lowUpperBound) { - return $this->colors['yellow']; - } - - return $this->colors['red']; - } - - protected function printCoverageCounts($numberOfCoveredElements, $totalNumberOfElements, $presicion) - { - $format = '%' . $presicion . 's'; - - return PHP_CodeCoverage_Util::percent( - $numberOfCoveredElements, $totalNumberOfElements, TRUE, TRUE - ) . - ' (' . sprintf($format, $numberOfCoveredElements) . '/' . - sprintf($format, $totalNumberOfElements) . ')'; - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Util.php b/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Util.php deleted file mode 100644 index b6ff649..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/PHP/CodeCoverage/Util.php +++ /dev/null @@ -1,463 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -// @codeCoverageIgnoreStart -if (!defined('T_NAMESPACE')) { - define('T_NAMESPACE', 377); -} - -if (!function_exists('trait_exists')) { - function trait_exists($name) - { - return FALSE; - } -} -// @codeCoverageIgnoreEnd - -/** - * Utility methods. - * - * @category PHP - * @package CodeCoverage - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Util -{ - /** - * @var string - */ - const REGEX = '(@covers\s+(?P.*?)\s*$)m'; - - /** - * @var array - */ - protected static $ignoredLines = array(); - - /** - * @var array - */ - protected static $templateMethods = array( - 'setUp', 'assertPreConditions', 'assertPostConditions', 'tearDown' - ); - - /** - * @var array - */ - protected static $ids = array(); - - /** - * Calculates the Change Risk Anti-Patterns (CRAP) index for a unit of code - * based on its cyclomatic complexity and percentage of code coverage. - * - * @param integer $ccn - * @param float $coverage - * @return string - */ - public static function crap($ccn, $coverage) - { - if ($coverage == 0) { - return (string)pow($ccn, 2) + $ccn; - } - - if ($coverage >= 95) { - return (string)$ccn; - } - - return sprintf( - '%01.2F', pow($ccn, 2) * pow(1 - $coverage/100, 3) + $ccn - ); - } - - /** - * Implementation of stream_resolve_include_path() in PHP - * for version before PHP 5.3.2. - * - * @param string $file - * @return mixed - * @author Mattis Stordalen Flister - * @since Method available since Release 1.1.0 - */ - public static function fileExistsInIncludePath($file) - { - if (function_exists('stream_resolve_include_path')) { - return stream_resolve_include_path($file); - } - - if (file_exists($file)) { - return realpath($file); - } - - $paths = explode(PATH_SEPARATOR, get_include_path()); - - foreach ($paths as $path) { - $fullpath = $path . DIRECTORY_SEPARATOR . $file; - - if (file_exists($fullpath)) { - return realpath($fullpath); - } - } - - return FALSE; - } - - /** - * @param string $directory - * @return string - * @throws PHP_CodeCoverage_Exception - */ - public static function getDirectory($directory) - { - if (substr($directory, -1, 1) != DIRECTORY_SEPARATOR) { - $directory .= DIRECTORY_SEPARATOR; - } - - if (is_dir($directory)) { - return $directory; - } - - if (mkdir($directory, 0777, TRUE)) { - return $directory; - } - - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Directory "%s" does not exist.', - $directory - ) - ); - } - - /** - * Returns the files and lines a test method wants to cover. - * - * @param string $className - * @param string $methodName - * @return array - */ - public static function getLinesToBeCovered($className, $methodName) - { - $codeToCoverList = array(); - $result = array(); - // @codeCoverageIgnoreStart - if (($pos = strpos($methodName, ' ')) !== FALSE) { - $methodName = substr($methodName, 0, $pos); - } - // @codeCoverageIgnoreEnd - $class = new ReflectionClass($className); - $method = new ReflectionMethod($className, $methodName); - $docComment = $class->getDocComment() . $method->getDocComment(); - - foreach (self::$templateMethods as $templateMethod) { - if ($class->hasMethod($templateMethod)) { - $reflector = $class->getMethod($templateMethod); - $docComment .= $reflector->getDocComment(); - unset($reflector); - } - } - - if (preg_match_all(self::REGEX, $docComment, $matches)) { - foreach ($matches['coveredElement'] as $coveredElement) { - $codeToCoverList = array_merge( - $codeToCoverList, - self::resolveCoversToReflectionObjects($coveredElement) - ); - } - - foreach ($codeToCoverList as $codeToCover) { - $fileName = $codeToCover->getFileName(); - - if (!isset($result[$fileName])) { - $result[$fileName] = array(); - } - - $result[$fileName] = array_unique( - array_merge( - $result[$fileName], - range( - $codeToCover->getStartLine(), $codeToCover->getEndLine() - ) - ) - ); - } - } - - return $result; - } - - /** - * Returns the lines of a source file that should be ignored. - * - * @param string $filename - * @param boolean $cacheTokens - * @return array - * @throws InvalidArgumentException - */ - public static function getLinesToBeIgnored($filename, $cacheTokens = TRUE) - { - if (!is_bool($cacheTokens)) { - throw new InvalidArgumentException; - } - - if (!isset(self::$ignoredLines[$filename])) { - self::$ignoredLines[$filename] = array(); - $ignore = FALSE; - $stop = FALSE; - - if ($cacheTokens) { - $tokens = PHP_Token_Stream_CachingFactory::get($filename); - } else { - $tokens = new PHP_Token_Stream($filename); - } - - $classes = $tokens->getClasses(); - $tokens = $tokens->tokens(); - - foreach ($tokens as $token) { - switch (get_class($token)) { - case 'PHP_Token_CLASS': - case 'PHP_Token_FUNCTION': { - $docblock = $token->getDocblock(); - - if (strpos($docblock, '@codeCoverageIgnore')) { - $endLine = $token->getEndLine(); - - for ($i = $token->getLine(); $i <= $endLine; $i++) { - self::$ignoredLines[$filename][$i] = TRUE; - } - } - - else if ($token instanceof PHP_Token_CLASS && - !empty($classes[$token->getName()]['methods'])) { - $firstMethod = array_shift( - $classes[$token->getName()]['methods'] - ); - - for ($i = $token->getLine(); $i < $firstMethod['startLine']; $i++) { - self::$ignoredLines[$filename][$i] = TRUE; - } - } - } - break; - - case 'PHP_Token_COMMENT': { - $_token = trim($token); - - if ($_token == '// @codeCoverageIgnoreStart' || - $_token == '//@codeCoverageIgnoreStart') { - $ignore = TRUE; - } - - else if ($_token == '// @codeCoverageIgnoreEnd' || - $_token == '//@codeCoverageIgnoreEnd') { - $stop = TRUE; - } - } - break; - } - - if ($ignore) { - self::$ignoredLines[$filename][$token->getLine()] = TRUE; - - if ($stop) { - $ignore = FALSE; - $stop = FALSE; - } - } - } - } - - return self::$ignoredLines[$filename]; - } - - /** - * @param float $a - * @param float $b - * @return float ($a / $b) * 100 - */ - public static function percent($a, $b, $asString = FALSE, $fixedWidth = FALSE) - { - if ($b > 0) { - $percent = ($a / $b) * 100; - } else { - $percent = 100; - } - - if ($asString) { - if ($fixedWidth) { - return sprintf('%6.2F%%', $percent); - } - - return sprintf('%01.2F%%', $percent); - } else { - return $percent; - } - } - - /** - * @param string $coveredElement - * @return array - */ - protected static function resolveCoversToReflectionObjects($coveredElement) - { - $codeToCoverList = array(); - - if (strpos($coveredElement, '::') !== FALSE) { - list($className, $methodName) = explode('::', $coveredElement); - - if (isset($methodName[0]) && $methodName[0] == '<') { - $classes = array($className); - - foreach ($classes as $className) { - if (!class_exists($className) && - !interface_exists($className)) { - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Trying to @cover not existing class or ' . - 'interface "%s".', - $className - ) - ); - } - - $class = new ReflectionClass($className); - $methods = $class->getMethods(); - $inverse = isset($methodName[1]) && $methodName[1] == '!'; - - if (strpos($methodName, 'protected')) { - $visibility = 'isProtected'; - } - - else if (strpos($methodName, 'private')) { - $visibility = 'isPrivate'; - } - - else if (strpos($methodName, 'public')) { - $visibility = 'isPublic'; - } - - foreach ($methods as $method) { - if ($inverse && !$method->$visibility()) { - $codeToCoverList[] = $method; - } - - else if (!$inverse && $method->$visibility()) { - $codeToCoverList[] = $method; - } - } - } - } else { - $classes = array($className); - - foreach ($classes as $className) { - if ($className == '' && function_exists($methodName)) { - $codeToCoverList[] = new ReflectionFunction( - $methodName - ); - } else { - if (!((class_exists($className) || - interface_exists($className) || - trait_exists($className)) && - method_exists($className, $methodName))) { - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Trying to @cover not existing method "%s::%s".', - $className, - $methodName - ) - ); - } - - $codeToCoverList[] = new ReflectionMethod( - $className, $methodName - ); - } - } - } - } else { - $extended = FALSE; - - if (strpos($coveredElement, '') !== FALSE) { - $coveredElement = str_replace( - '', '', $coveredElement - ); - - $extended = TRUE; - } - - $classes = array($coveredElement); - - if ($extended) { - $classes = array_merge( - $classes, - class_implements($coveredElement), - class_parents($coveredElement) - ); - } - - foreach ($classes as $className) { - if (!class_exists($className) && - !interface_exists($className) && - !trait_exists($className)) { - throw new PHP_CodeCoverage_Exception( - sprintf( - 'Trying to @cover not existing class or ' . - 'interface "%s".', - $className - ) - ); - } - - $codeToCoverList[] = new ReflectionClass($className); - } - } - - return $codeToCoverList; - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/README.markdown b/vendor/eher/phpunit/src/php-code-coverage/README.markdown deleted file mode 100644 index 0044eaa..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/README.markdown +++ /dev/null @@ -1,43 +0,0 @@ -PHP_CodeCoverage -================ - -**PHP_CodeCoverage** is a library that provides collection, processing, and rendering functionality for PHP code coverage information. - -Requirements ------------- - -* PHP 5.2.7 (or later) is required but PHP 5.3.8 (or later) is highly recommended. -* [Xdebug](http://xdebug.org/) 2.0.5 (or later) is required but Xdebug 2.1.2 (or later) is highly recommended. - -Installation ------------- - -PHP_CodeCoverage should be installed using the PEAR Installer, the backbone of the [PHP Extension and Application Repository](http://pear.php.net/) that provides a distribution system for PHP packages. - -Depending on your OS distribution and/or your PHP environment, you may need to install PEAR or update your existing PEAR installation before you can proceed with the instructions in this chapter. `sudo pear upgrade PEAR` usually suffices to upgrade an existing PEAR installation. The [PEAR Manual ](http://pear.php.net/manual/en/installation.getting.php) explains how to perform a fresh installation of PEAR. - -The following two commands are all that is required to install PHP_CodeCoverage using the PEAR Installer: - - pear config-set auto_discover 1 - pear install pear.phpunit.de/PHP_CodeCoverage - -After the installation you can find the PHP_CodeCoverage source files inside your local PEAR directory; the path is usually `/usr/lib/php/PHP/CodeCoverage`. - -Using the PHP_CodeCoverage API ------------------------------- - - start(''); - - // ... - - $coverage->stop(); - - $writer = new PHP_CodeCoverage_Report_Clover; - $writer->process($coverage, '/tmp/clover.xml'); - - $writer = new PHP_CodeCoverage_Report_HTML; - $writer->process($coverage, '/tmp/code-coverage-report'); diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/FilterTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/FilterTest.php deleted file mode 100644 index 326b118..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/FilterTest.php +++ /dev/null @@ -1,302 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -/** - * Tests for the PHP_CodeCoverage_Filter class. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_FilterTest extends PHPUnit_Framework_TestCase -{ - protected $filter; - protected $files; - - protected function setUp() - { - $this->filter = unserialize('O:23:"PHP_CodeCoverage_Filter":0:{}'); - - $this->files = array( - TEST_FILES_PATH . 'BankAccount.php', - TEST_FILES_PATH . 'BankAccountTest.php', - TEST_FILES_PATH . 'CoverageClassExtendedTest.php', - TEST_FILES_PATH . 'CoverageClassTest.php', - TEST_FILES_PATH . 'CoverageFunctionTest.php', - TEST_FILES_PATH . 'CoverageMethodTest.php', - TEST_FILES_PATH . 'CoverageNoneTest.php', - TEST_FILES_PATH . 'CoverageNotPrivateTest.php', - TEST_FILES_PATH . 'CoverageNotProtectedTest.php', - TEST_FILES_PATH . 'CoverageNotPublicTest.php', - TEST_FILES_PATH . 'CoveragePrivateTest.php', - TEST_FILES_PATH . 'CoverageProtectedTest.php', - TEST_FILES_PATH . 'CoveragePublicTest.php', - TEST_FILES_PATH . 'CoveredClass.php', - TEST_FILES_PATH . 'CoveredFunction.php', - TEST_FILES_PATH . 'NamespaceCoverageClassExtendedTest.php', - TEST_FILES_PATH . 'NamespaceCoverageClassTest.php', - TEST_FILES_PATH . 'NamespaceCoverageMethodTest.php', - TEST_FILES_PATH . 'NamespaceCoverageNotPrivateTest.php', - TEST_FILES_PATH . 'NamespaceCoverageNotProtectedTest.php', - TEST_FILES_PATH . 'NamespaceCoverageNotPublicTest.php', - TEST_FILES_PATH . 'NamespaceCoveragePrivateTest.php', - TEST_FILES_PATH . 'NamespaceCoverageProtectedTest.php', - TEST_FILES_PATH . 'NamespaceCoveragePublicTest.php', - TEST_FILES_PATH . 'NamespaceCoveredClass.php', - TEST_FILES_PATH . 'NotExistingCoveredElementTest.php', - TEST_FILES_PATH . 'source_with_ignore.php', - TEST_FILES_PATH . 'source_with_namespace.php', - TEST_FILES_PATH . 'source_without_ignore.php', - TEST_FILES_PATH . 'source_without_namespace.php' - ); - } - - /** - * @covers PHP_CodeCoverage_Filter::addFileToBlacklist - * @covers PHP_CodeCoverage_Filter::getBlacklist - */ - public function testAddingAFileToTheBlacklistWorks() - { - $this->filter->addFileToBlacklist($this->files[0]); - - $this->assertEquals( - array($this->files[0]), $this->filter->getBlacklist() - ); - } - - /** - * @covers PHP_CodeCoverage_Filter::removeFileFromBlacklist - * @covers PHP_CodeCoverage_Filter::getBlacklist - */ - public function testRemovingAFileFromTheBlacklistWorks() - { - $this->filter->addFileToBlacklist($this->files[0]); - $this->filter->removeFileFromBlacklist($this->files[0]); - - $this->assertEquals(array(), $this->filter->getBlacklist()); - } - - /** - * @covers PHP_CodeCoverage_Filter::addDirectoryToBlacklist - * @covers PHP_CodeCoverage_Filter::getBlacklist - * @depends testAddingAFileToTheBlacklistWorks - */ - public function testAddingADirectoryToTheBlacklistWorks() - { - $this->filter->addDirectoryToBlacklist(TEST_FILES_PATH); - - $blacklist = $this->filter->getBlacklist(); - sort($blacklist); - - $this->assertEquals($this->files, $blacklist); - } - - /** - * @covers PHP_CodeCoverage_Filter::addFilesToBlacklist - * @covers PHP_CodeCoverage_Filter::getBlacklist - */ - public function testAddingFilesToTheBlacklistWorks() - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - TEST_FILES_PATH, $suffixes = '.php' - ); - - $this->filter->addFilesToBlacklist($files); - - $blacklist = $this->filter->getBlacklist(); - sort($blacklist); - - $this->assertEquals($this->files, $blacklist); - } - - /** - * @covers PHP_CodeCoverage_Filter::removeDirectoryFromBlacklist - * @covers PHP_CodeCoverage_Filter::getBlacklist - * @depends testAddingADirectoryToTheBlacklistWorks - */ - public function testRemovingADirectoryFromTheBlacklistWorks() - { - $this->filter->addDirectoryToBlacklist(TEST_FILES_PATH); - $this->filter->removeDirectoryFromBlacklist(TEST_FILES_PATH); - - $this->assertEquals(array(), $this->filter->getBlacklist()); - } - - /** - * @covers PHP_CodeCoverage_Filter::addFileToWhitelist - * @covers PHP_CodeCoverage_Filter::getWhitelist - */ - public function testAddingAFileToTheWhitelistWorks() - { - $this->filter->addFileToWhitelist($this->files[0]); - - $this->assertEquals( - array($this->files[0]), $this->filter->getWhitelist() - ); - } - - /** - * @covers PHP_CodeCoverage_Filter::removeFileFromWhitelist - * @covers PHP_CodeCoverage_Filter::getWhitelist - */ - public function testRemovingAFileFromTheWhitelistWorks() - { - $this->filter->addFileToWhitelist($this->files[0]); - $this->filter->removeFileFromWhitelist($this->files[0]); - - $this->assertEquals(array(), $this->filter->getWhitelist()); - } - - /** - * @covers PHP_CodeCoverage_Filter::addDirectoryToWhitelist - * @covers PHP_CodeCoverage_Filter::getWhitelist - * @depends testAddingAFileToTheWhitelistWorks - */ - public function testAddingADirectoryToTheWhitelistWorks() - { - $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH); - - $whitelist = $this->filter->getWhitelist(); - sort($whitelist); - - $this->assertEquals($this->files, $whitelist); - } - - /** - * @covers PHP_CodeCoverage_Filter::addFilesToWhitelist - * @covers PHP_CodeCoverage_Filter::getBlacklist - */ - public function testAddingFilesToTheWhitelistWorks() - { - $facade = new File_Iterator_Facade; - $files = $facade->getFilesAsArray( - TEST_FILES_PATH, $suffixes = '.php' - ); - - $this->filter->addFilesToWhitelist($files); - - $whitelist = $this->filter->getWhitelist(); - sort($whitelist); - - $this->assertEquals($this->files, $whitelist); - } - - /** - * @covers PHP_CodeCoverage_Filter::removeDirectoryFromWhitelist - * @covers PHP_CodeCoverage_Filter::getWhitelist - * @depends testAddingADirectoryToTheWhitelistWorks - */ - public function testRemovingADirectoryFromTheWhitelistWorks() - { - $this->filter->addDirectoryToWhitelist(TEST_FILES_PATH); - $this->filter->removeDirectoryFromWhitelist(TEST_FILES_PATH); - - $this->assertEquals(array(), $this->filter->getWhitelist()); - } - - /** - * @covers PHP_CodeCoverage_Filter::isFile - */ - public function testIsFile() - { - $this->assertFalse($this->filter->isFile('eval()\'d code')); - $this->assertFalse($this->filter->isFile('runtime-created function')); - $this->assertFalse($this->filter->isFile('assert code')); - $this->assertFalse($this->filter->isFile('regexp code')); - $this->assertTrue($this->filter->isFile('filename')); - } - - /** - * @covers PHP_CodeCoverage_Filter::isFiltered - */ - public function testBlacklistedFileIsFiltered() - { - $this->filter->addFileToBlacklist($this->files[0]); - $this->assertTrue($this->filter->isFiltered($this->files[0])); - } - - /** - * @covers PHP_CodeCoverage_Filter::isFiltered - */ - public function testWhitelistedFileIsNotFiltered() - { - $this->filter->addFileToWhitelist($this->files[0]); - $this->assertFalse($this->filter->isFiltered($this->files[0])); - } - - /** - * @covers PHP_CodeCoverage_Filter::isFiltered - */ - public function testNotWhitelistedFileIsFiltered() - { - $this->filter->addFileToWhitelist($this->files[0]); - $this->assertTrue($this->filter->isFiltered($this->files[1])); - } - - /** - * @covers PHP_CodeCoverage_Filter::isFiltered - * @expectedException InvalidArgumentException - */ - public function testIsFilteredThrowsExceptionForInvalidArgument() - { - $this->filter->isFiltered('foo', array(), NULL); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/CloverTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/CloverTest.php deleted file mode 100644 index 1fb00ba..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/CloverTest.php +++ /dev/null @@ -1,97 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once TEST_FILES_PATH . '../TestCase.php'; - -/** - * Tests for the PHP_CodeCoverage_Report_Clover class. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_Report_CloverTest extends PHP_CodeCoverage_TestCase -{ - /** - * @covers PHP_CodeCoverage_Report_Clover - */ - public function testCloverForBankAccountTest() - { - $clover = new PHP_CodeCoverage_Report_Clover; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'BankAccount-clover.xml', - $clover->process($this->getCoverageForBankAccount(), NULL, 'BankAccount') - ); - } - - /** - * @covers PHP_CodeCoverage_Report_Clover - */ - public function testCloverForFileWithIgnoredLines() - { - $clover = new PHP_CodeCoverage_Report_Clover; - - $this->assertStringMatchesFormatFile( - TEST_FILES_PATH . 'ignored-lines-clover.xml', - $clover->process($this->getCoverageForFileWithIgnoredLines()) - ); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/FactoryTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/FactoryTest.php deleted file mode 100644 index eecebd3..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/Report/FactoryTest.php +++ /dev/null @@ -1,264 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.1.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once TEST_FILES_PATH . '../TestCase.php'; - -/** - * Tests for the PHP_CodeCoverage_Report_Factory class. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.1.0 - */ -class PHP_CodeCoverage_Report_FactoryTest extends PHP_CodeCoverage_TestCase -{ - protected $factory; - - protected function setUp() - { - $this->factory = new PHP_CodeCoverage_Report_Factory; - } - - public function testSomething() - { - $root = $this->getCoverageForBankAccount()->getReport(); - - $expectedPath = rtrim(TEST_FILES_PATH, '/'); - $this->assertEquals($expectedPath, $root->getName()); - $this->assertEquals($expectedPath, $root->getPath()); - $this->assertEquals(10, $root->getNumExecutableLines()); - $this->assertEquals(5, $root->getNumExecutedLines()); - $this->assertEquals(1, $root->getNumClasses()); - $this->assertEquals(0, $root->getNumTestedClasses()); - $this->assertEquals(4, $root->getNumMethods()); - $this->assertEquals(3, $root->getNumTestedMethods()); - $this->assertEquals('0.00%', $root->getTestedClassesPercent()); - $this->assertEquals('75.00%', $root->getTestedMethodsPercent()); - $this->assertEquals('50.00%', $root->getLineExecutedPercent()); - $this->assertEquals(0, $root->getNumFunctions()); - $this->assertEquals(0, $root->getNumTestedFunctions()); - $this->assertNull($root->getParent()); - $this->assertEquals(array(), $root->getDirectories()); - #$this->assertEquals(array(), $root->getFiles()); - #$this->assertEquals(array(), $root->getChildNodes()); - - $this->assertEquals( - array( - 'BankAccount' => array( - 'methods' => array( - 'getBalance' => array( - 'signature' => 'getBalance()', - 'startLine' => 6, - 'endLine' => 9, - 'executableLines' => 1, - 'executedLines' => 1, - 'ccn' => 1, - 'coverage' => 100, - 'crap' => '1', - 'link' => 'BankAccount.php.html#6', - 'methodName' => 'getBalance' - ), - 'setBalance' => array( - 'signature' => 'setBalance($balance)', - 'startLine' => 11, - 'endLine' => 18, - 'executableLines' => 5, - 'executedLines' => 0, - 'ccn' => 2, - 'coverage' => 0, - 'crap' => 6, - 'link' => 'BankAccount.php.html#11', - 'methodName' => 'setBalance' - ), - 'depositMoney' => array( - 'signature' => 'depositMoney($balance)', - 'startLine' => 20, - 'endLine' => 25, - 'executableLines' => 2, - 'executedLines' => 2, - 'ccn' => 1, - 'coverage' => 100, - 'crap' => '1', - 'link' => 'BankAccount.php.html#20', - 'methodName' => 'depositMoney' - ), - 'withdrawMoney' => array( - 'signature' => 'withdrawMoney($balance)', - 'startLine' => 27, - 'endLine' => 32, - 'executableLines' => 2, - 'executedLines' => 2, - 'ccn' => 1, - 'coverage' => 100, - 'crap' => '1', - 'link' => 'BankAccount.php.html#27', - 'methodName' => 'withdrawMoney' - ), - ), - 'startLine' => 2, - 'executableLines' => 10, - 'executedLines' => 5, - 'ccn' => 5, - 'coverage' => 50, - 'crap' => '8.12', - 'package' => array( - 'namespace' => '', - 'fullPackage' => '', - 'category' => '', - 'package' => '', - 'subpackage' => '' - ), - 'link' => 'BankAccount.php.html#2', - 'className' => 'BankAccount' - ) - ), - $root->getClasses() - ); - - $this->assertEquals(array(), $root->getFunctions()); - } - - /** - * @covers PHP_CodeCoverage_Report_Factory::buildDirectoryStructure - */ - public function testBuildDirectoryStructure() - { - $method = new ReflectionMethod( - 'PHP_CodeCoverage_Report_Factory', 'buildDirectoryStructure' - ); - - $method->setAccessible(TRUE); - - $this->assertEquals( - array( - 'src' => array( - 'Money.php/f' => array(), - 'MoneyBag.php/f' => array() - ) - ), - $method->invoke( - $this->factory, - array('src/Money.php' => array(), 'src/MoneyBag.php' => array()) - ) - ); - } - - /** - * @covers PHP_CodeCoverage_Report_Factory::reducePaths - * @dataProvider reducePathsProvider - */ - public function testReducePaths($reducedPaths, $commonPath, $paths) - { - $method = new ReflectionMethod( - 'PHP_CodeCoverage_Report_Factory', 'reducePaths' - ); - - $method->setAccessible(TRUE); - - $_commonPath = $method->invokeArgs($this->factory, array(&$paths)); - - $this->assertEquals($reducedPaths, $paths); - $this->assertEquals($commonPath, $_commonPath); - } - - public function reducePathsProvider() - { - return array( - array( - array( - 'Money.php' => array(), - 'MoneyBag.php' => array() - ), - '/home/sb/Money', - array( - '/home/sb/Money/Money.php' => array(), - '/home/sb/Money/MoneyBag.php' => array() - ) - ), - array( - array( - 'Money.php' => array() - ), - '/home/sb/Money/', - array( - '/home/sb/Money/Money.php' => array() - ) - ), - array( - array(), - '.', - array() - ), - array( - array( - 'Money.php' => array(), - 'MoneyBag.php' => array(), - 'Cash.phar/Cash.php' => array(), - ), - '/home/sb/Money', - array( - '/home/sb/Money/Money.php' => array(), - '/home/sb/Money/MoneyBag.php' => array(), - 'phar:///home/sb/Money/Cash.phar/Cash.php' => array(), - ), - ), - ); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/UtilTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/UtilTest.php deleted file mode 100644 index 5e6e463..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverage/UtilTest.php +++ /dev/null @@ -1,383 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -if (stream_resolve_include_path('vfsStream/vfsStream.php')) { - require_once 'vfsStream/vfsStream.php'; -} - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once TEST_FILES_PATH . 'CoverageClassExtendedTest.php'; -require_once TEST_FILES_PATH . 'CoverageClassTest.php'; -require_once TEST_FILES_PATH . 'CoverageFunctionTest.php'; -require_once TEST_FILES_PATH . 'CoverageMethodTest.php'; -require_once TEST_FILES_PATH . 'CoverageNoneTest.php'; -require_once TEST_FILES_PATH . 'CoverageNotPrivateTest.php'; -require_once TEST_FILES_PATH . 'CoverageNotProtectedTest.php'; -require_once TEST_FILES_PATH . 'CoverageNotPublicTest.php'; -require_once TEST_FILES_PATH . 'CoveragePrivateTest.php'; -require_once TEST_FILES_PATH . 'CoverageProtectedTest.php'; -require_once TEST_FILES_PATH . 'CoveragePublicTest.php'; -require_once TEST_FILES_PATH . 'CoveredClass.php'; -require_once TEST_FILES_PATH . 'CoveredFunction.php'; -require_once TEST_FILES_PATH . 'NotExistingCoveredElementTest.php'; - -if (version_compare(PHP_VERSION, '5.3', '>')) { - require_once TEST_FILES_PATH . 'NamespaceCoverageClassExtendedTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoverageClassTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoverageMethodTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoverageNotPrivateTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoverageNotProtectedTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoverageNotPublicTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoveragePrivateTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoverageProtectedTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoveragePublicTest.php'; - require_once TEST_FILES_PATH . 'NamespaceCoveredClass.php'; -} - -/** - * Tests for the PHP_CodeCoverage_Util class. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverage_UtilTest extends PHPUnit_Framework_TestCase -{ - protected function setUp() - { - if (!class_exists('vfsStream')) { - $this->markTestSkipped('vfsStream is not available.'); - } - - vfsStream::setup('UtilTest'); - } - - /** - * @covers PHP_CodeCoverage_Util::crap - */ - public function testCrap() - { - $this->assertEquals(6, PHP_CodeCoverage_Util::crap(2, 0)); - $this->assertEquals(2, PHP_CodeCoverage_Util::crap(2, 95)); - $this->assertEquals(2.5, PHP_CodeCoverage_Util::crap(2, 50)); - } - - /** - * @covers PHP_CodeCoverage_Util::getLinesToBeCovered - * @covers PHP_CodeCoverage_Util::resolveCoversToReflectionObjects - * @dataProvider getLinesToBeCoveredProvider - */ - public function testGetLinesToBeCovered($test, $lines) - { - if (strpos($test, 'Namespace') === 0) { - if (!version_compare(PHP_VERSION, '5.3', '>')) { - $this->markTestSkipped('PHP 5.3 (or later) is required.'); - } - - $expected = array( - TEST_FILES_PATH . 'NamespaceCoveredClass.php' => $lines - ); - } - - else if ($test === 'CoverageNoneTest') { - $expected = array(); - } - - else if ($test === 'CoverageFunctionTest') { - $expected = array( - TEST_FILES_PATH . 'CoveredFunction.php' => $lines - ); - } - - else { - $expected = array(TEST_FILES_PATH . 'CoveredClass.php' => $lines); - } - - $this->assertEquals( - $expected, - PHP_CodeCoverage_Util::getLinesToBeCovered( - $test, 'testSomething' - ) - ); - } - - /** - * @covers PHP_CodeCoverage_Util::getLinesToBeCovered - * @covers PHP_CodeCoverage_Util::resolveCoversToReflectionObjects - * @expectedException PHP_CodeCoverage_Exception - */ - public function testGetLinesToBeCovered2() - { - PHP_CodeCoverage_Util::getLinesToBeCovered( - 'NotExistingCoveredElementTest', 'testOne' - ); - } - - /** - * @covers PHP_CodeCoverage_Util::getLinesToBeCovered - * @covers PHP_CodeCoverage_Util::resolveCoversToReflectionObjects - * @expectedException PHP_CodeCoverage_Exception - */ - public function testGetLinesToBeCovered3() - { - PHP_CodeCoverage_Util::getLinesToBeCovered( - 'NotExistingCoveredElementTest', 'testTwo' - ); - } - - /** - * @covers PHP_CodeCoverage_Util::getLinesToBeCovered - * @covers PHP_CodeCoverage_Util::resolveCoversToReflectionObjects - * @expectedException PHP_CodeCoverage_Exception - */ - public function testGetLinesToBeCovered4() - { - PHP_CodeCoverage_Util::getLinesToBeCovered( - 'NotExistingCoveredElementTest', 'testThree' - ); - } - - /** - * @covers PHP_CodeCoverage_Util::getLinesToBeIgnored - */ - public function testGetLinesToBeIgnored() - { - $this->assertEquals( - array( - 3 => TRUE, - 4 => TRUE, - 5 => TRUE, - 11 => TRUE, - 12 => TRUE, - 13 => TRUE, - 14 => TRUE, - 15 => TRUE, - 16 => TRUE, - 18 => TRUE, - 19 => TRUE, - 20 => TRUE, - 21 => TRUE, - 22 => TRUE, - 23 => TRUE, - 24 => TRUE, - 25 => TRUE - ), - PHP_CodeCoverage_Util::getLinesToBeIgnored( - TEST_FILES_PATH . 'source_with_ignore.php' - ) - ); - } - - /** - * @covers PHP_CodeCoverage_Util::getLinesToBeIgnored - */ - public function testGetLinesToBeIgnored2() - { - $this->assertEquals( - array(), - PHP_CodeCoverage_Util::getLinesToBeIgnored( - TEST_FILES_PATH . 'source_without_ignore.php' - ) - ); - } - - /** - * @covers PHP_CodeCoverage_Util::getDirectory - */ - public function testGetDirectory() - { - if (!class_exists('vfsStream')) { - $this->markTestSkipped('vfsStream is not installed'); - } - - $this->assertEquals( - vfsStream::url('UtilTest') . '/', - PHP_CodeCoverage_Util::getDirectory(vfsStream::url('UtilTest')) - ); - } - - /** - * @covers PHP_CodeCoverage_Util::getDirectory - */ - public function testGetDirectory2() - { - if (!class_exists('vfsStream')) { - $this->markTestSkipped('vfsStream is not installed'); - } - - PHP_CodeCoverage_Util::getDirectory( - vfsStream::url('UtilTest') . '/report' - ); - - $this->assertTrue(vfsStreamWrapper::getRoot()->hasChild('report')); - } - - /** - * @covers PHP_CodeCoverage_Util::getDirectory - * @expectedException PHP_CodeCoverage_Exception - */ - public function testGetDirectory3() - { - if (!class_exists('vfsStream')) { - $this->markTestSkipped('vfsStream is not installed'); - } - - PHP_CodeCoverage_Util::getDirectory( - vfsStream::url('/not/existing/path') - ); - } - - /** - * @covers PHP_CodeCoverage_Util::percent - */ - public function testPercent() - { - $this->assertEquals(100, PHP_CodeCoverage_Util::percent(100, 0)); - $this->assertEquals(100, PHP_CodeCoverage_Util::percent(100, 100)); - $this->assertEquals( - '100.00%', PHP_CodeCoverage_Util::percent(100, 100, TRUE) - ); - } - - public function getLinesToBeCoveredProvider() - { - return array( - array( - 'CoverageNoneTest', - array() - ), - array( - 'CoverageClassExtendedTest', - array_merge(range(19, 36), range(2, 17)) - ), - array( - 'CoverageClassTest', - range(19, 36) - ), - array( - 'CoverageMethodTest', - range(31, 35) - ), - array( - 'CoverageNotPrivateTest', - array_merge(range(25, 29), range(31, 35)) - ), - array( - 'CoverageNotProtectedTest', - array_merge(range(21, 23), range(31, 35)) - ), - array( - 'CoverageNotPublicTest', - array_merge(range(21, 23), range(25, 29)) - ), - array( - 'CoveragePrivateTest', - range(21, 23) - ), - array( - 'CoverageProtectedTest', - range(25, 29) - ), - array( - 'CoveragePublicTest', - range(31, 35) - ), - array( - 'CoverageFunctionTest', - range(2, 4) - ), - array( - 'NamespaceCoverageClassExtendedTest', - array_merge(range(21, 38), range(4, 19)) - ), - array( - 'NamespaceCoverageClassTest', - range(21, 38) - ), - array( - 'NamespaceCoverageMethodTest', - range(33, 37) - ), - array( - 'NamespaceCoverageNotPrivateTest', - array_merge(range(27, 31), range(33, 37)) - ), - array( - 'NamespaceCoverageNotProtectedTest', - array_merge(range(23, 25), range(33, 37)) - ), - array( - 'NamespaceCoverageNotPublicTest', - array_merge(range(23, 25), range(27, 31)) - ), - array( - 'NamespaceCoveragePrivateTest', - range(23, 25) - ), - array( - 'NamespaceCoverageProtectedTest', - range(27, 31) - ), - array( - 'NamespaceCoveragePublicTest', - range(33, 37) - ) - ); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverageTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverageTest.php deleted file mode 100644 index dc2f788..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/PHP/CodeCoverageTest.php +++ /dev/null @@ -1,294 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once TEST_FILES_PATH . '../TestCase.php'; - -require_once TEST_FILES_PATH . 'BankAccount.php'; -require_once TEST_FILES_PATH . 'BankAccountTest.php'; - -/** - * Tests for the PHP_CodeCoverage class. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -class PHP_CodeCoverageTest extends PHP_CodeCoverage_TestCase -{ - /** - * @covers PHP_CodeCoverage::__construct - * @covers PHP_CodeCoverage::filter - */ - public function testConstructor() - { - $coverage = new PHP_CodeCoverage; - - $this->assertAttributeInstanceOf( - 'PHP_CodeCoverage_Driver_Xdebug', 'driver', $coverage - ); - - $this->assertAttributeInstanceOf( - 'PHP_CodeCoverage_Filter', 'filter', $coverage - ); - } - - /** - * @covers PHP_CodeCoverage::__construct - * @covers PHP_CodeCoverage::filter - */ - public function testConstructor2() - { - $filter = new PHP_CodeCoverage_Filter; - $coverage = new PHP_CodeCoverage(NULL, $filter); - - $this->assertAttributeInstanceOf( - 'PHP_CodeCoverage_Driver_Xdebug', 'driver', $coverage - ); - - $this->assertSame($filter, $coverage->filter()); - } - - /** - * @covers PHP_CodeCoverage::start - * @expectedException InvalidArgumentException - */ - public function testStartThrowsExceptionForInvalidArgument() - { - $coverage = new PHP_CodeCoverage; - $coverage->start(NULL, array(), NULL); - } - - /** - * @covers PHP_CodeCoverage::stop - * @expectedException InvalidArgumentException - */ - public function testStopThrowsExceptionForInvalidArgument() - { - $coverage = new PHP_CodeCoverage; - $coverage->stop(NULL); - } - - /** - * @covers PHP_CodeCoverage::append - * @expectedException InvalidArgumentException - */ - public function testAppendThrowsExceptionForInvalidArgument() - { - $coverage = new PHP_CodeCoverage; - $coverage->append(array(), NULL); - } - - /** - * @covers PHP_CodeCoverage::setCacheTokens - * @expectedException InvalidArgumentException - */ - public function testSetCacheTokensThrowsExceptionForInvalidArgument() - { - $coverage = new PHP_CodeCoverage; - $coverage->setCacheTokens(NULL); - } - - /** - * @covers PHP_CodeCoverage::setCacheTokens - */ - public function testSetCacheTokens() - { - $coverage = new PHP_CodeCoverage; - $coverage->setCacheTokens(TRUE); - $this->assertAttributeEquals(TRUE, 'cacheTokens', $coverage); - } - - /** - * @covers PHP_CodeCoverage::setForceCoversAnnotation - * @expectedException InvalidArgumentException - */ - public function testSetForceCoversAnnotationThrowsExceptionForInvalidArgument() - { - $coverage = new PHP_CodeCoverage; - $coverage->setForceCoversAnnotation(NULL); - } - - /** - * @covers PHP_CodeCoverage::setForceCoversAnnotation - */ - public function testSetForceCoversAnnotation() - { - $coverage = new PHP_CodeCoverage; - $coverage->setForceCoversAnnotation(TRUE); - $this->assertAttributeEquals(TRUE, 'forceCoversAnnotation', $coverage); - } - - /** - * @covers PHP_CodeCoverage::setProcessUncoveredFilesFromWhitelist - * @expectedException InvalidArgumentException - */ - public function testSetProcessUncoveredFilesFromWhitelistThrowsExceptionForInvalidArgument() - { - $coverage = new PHP_CodeCoverage; - $coverage->setProcessUncoveredFilesFromWhitelist(NULL); - } - - /** - * @covers PHP_CodeCoverage::setProcessUncoveredFilesFromWhitelist - */ - public function testSetProcessUncoveredFilesFromWhitelist() - { - $coverage = new PHP_CodeCoverage; - $coverage->setProcessUncoveredFilesFromWhitelist(TRUE); - $this->assertAttributeEquals( - TRUE, 'processUncoveredFilesFromWhitelist', $coverage - ); - } - - /** - * @covers PHP_CodeCoverage::setMapTestClassNameToCoveredClassName - */ - public function testSetMapTestClassNameToCoveredClassName() - { - $coverage = new PHP_CodeCoverage; - $coverage->setMapTestClassNameToCoveredClassName(TRUE); - $this->assertAttributeEquals( - TRUE, 'mapTestClassNameToCoveredClassName', $coverage - ); - } - - /** - * @covers PHP_CodeCoverage::setMapTestClassNameToCoveredClassName - * @expectedException InvalidArgumentException - */ - public function testSetMapTestClassNameToCoveredClassNameThrowsExceptionForInvalidArgument() - { - $coverage = new PHP_CodeCoverage; - $coverage->setMapTestClassNameToCoveredClassName(NULL); - } - - /** - * @covers PHP_CodeCoverage::clear - */ - public function testClear() - { - $coverage = new PHP_CodeCoverage; - $coverage->clear(); - - $this->assertAttributeEquals(NULL, 'currentId', $coverage); - $this->assertAttributeEquals(array(), 'data', $coverage); - $this->assertAttributeEquals(array(), 'tests', $coverage); - } - - /** - * @covers PHP_CodeCoverage::start - * @covers PHP_CodeCoverage::stop - * @covers PHP_CodeCoverage::append - * @covers PHP_CodeCoverage::applyListsFilter - * @covers PHP_CodeCoverage::initializeFilesThatAreSeenTheFirstTime - * @covers PHP_CodeCoverage::applyCoversAnnotationFilter - * @covers PHP_CodeCoverage::getTests - */ - public function testCollect() - { - $coverage = $this->getCoverageForBankAccount(); - - $this->assertEquals( - $this->getExpectedDataArrayForBankAccount(), $coverage->getData() - ); - - $this->assertEquals( - array( - 'BankAccountTest::testBalanceIsInitiallyZero' => NULL, - 'BankAccountTest::testBalanceCannotBecomeNegative' => NULL, - 'BankAccountTest::testBalanceCannotBecomeNegative2' => NULL, - 'BankAccountTest::testDepositWithdrawMoney' => NULL - ), - $coverage->getTests() - ); - } - - /** - * @covers PHP_CodeCoverage::getData - * @covers PHP_CodeCoverage::merge - */ - public function testMerge() - { - $coverage = $this->getCoverageForBankAccountForFirstTwoTests(); - $coverage->merge($this->getCoverageForBankAccountForLastTwoTests()); - - $this->assertEquals( - $this->getExpectedDataArrayForBankAccount(), $coverage->getData() - ); - } - - /** - * @covers PHP_CodeCoverage::getData - * @covers PHP_CodeCoverage::merge - */ - public function testMerge2() - { - $coverage = new PHP_CodeCoverage( - $this->getMock('PHP_CodeCoverage_Driver_Xdebug'), - new PHP_CodeCoverage_Filter - ); - - $coverage->merge($this->getCoverageForBankAccount()); - - $this->assertEquals( - $this->getExpectedDataArrayForBankAccount(), $coverage->getData() - ); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/TestCase.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/TestCase.php deleted file mode 100644 index f20764a..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/TestCase.php +++ /dev/null @@ -1,267 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since File available since Release 1.0.0 - */ - -/** - * Abstract base class for test case classes. - * - * @category PHP - * @package CodeCoverage - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: 1.1.2 - * @link http://github.com/sebastianbergmann/php-code-coverage - * @since Class available since Release 1.0.0 - */ -abstract class PHP_CodeCoverage_TestCase extends PHPUnit_Framework_TestCase -{ - protected function getXdebugDataForBankAccount() - { - return array( - array( - TEST_FILES_PATH . 'BankAccount.php' => array( - 8 => 1, - 9 => -2, - 13 => -1, - 14 => -1, - 15 => -1, - 16 => -1, - 18 => -1, - 22 => -1, - 24 => -1, - 25 => -2, - 29 => -1, - 31 => -1, - 32 => -2 - ) - ), - array( - TEST_FILES_PATH . 'BankAccount.php' => array( - 8 => 1, - 13 => 1, - 16 => 1, - 29 => 1, - ) - ), - array( - TEST_FILES_PATH . 'BankAccount.php' => array( - 8 => 1, - 13 => 1, - 16 => 1, - 22 => 1, - ) - ), - array( - TEST_FILES_PATH . 'BankAccount.php' => array( - 8 => 1, - 13 => 1, - 14 => 1, - 15 => 1, - 18 => 1, - 22 => 1, - 24 => 1, - 29 => 1, - 31 => 1, - ) - ) - ); - } - - protected function getCoverageForBankAccount() - { - $data = $this->getXdebugDataForBankAccount(); - - $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug'); - $stub->expects($this->any()) - ->method('stop') - ->will($this->onConsecutiveCalls( - $data[0], $data[1], $data[2], $data[3] - )); - - $coverage = new PHP_CodeCoverage($stub, new PHP_CodeCoverage_Filter); - - $coverage->start( - new BankAccountTest('testBalanceIsInitiallyZero'), TRUE - ); - $coverage->stop(); - - $coverage->start( - new BankAccountTest('testBalanceCannotBecomeNegative') - ); - $coverage->stop(); - - $coverage->start( - new BankAccountTest('testBalanceCannotBecomeNegative2') - ); - $coverage->stop(); - - $coverage->start( - new BankAccountTest('testDepositWithdrawMoney') - ); - $coverage->stop(); - - return $coverage; - } - - protected function getCoverageForBankAccountForFirstTwoTests() - { - $data = $this->getXdebugDataForBankAccount(); - - $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug'); - $stub->expects($this->any()) - ->method('stop') - ->will($this->onConsecutiveCalls( - $data[0], $data[1] - )); - - $coverage = new PHP_CodeCoverage($stub, new PHP_CodeCoverage_Filter); - - $coverage->start( - new BankAccountTest('testBalanceIsInitiallyZero'), TRUE - ); - $coverage->stop(); - - $coverage->start( - new BankAccountTest('testBalanceCannotBecomeNegative') - ); - $coverage->stop(); - - return $coverage; - } - - protected function getCoverageForBankAccountForLastTwoTests() - { - $data = $this->getXdebugDataForBankAccount(); - - $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug'); - $stub->expects($this->any()) - ->method('stop') - ->will($this->onConsecutiveCalls( - $data[2], $data[3] - )); - - $coverage = new PHP_CodeCoverage($stub, new PHP_CodeCoverage_Filter); - - $coverage->start( - new BankAccountTest('testBalanceCannotBecomeNegative2'), TRUE - ); - $coverage->stop(); - - $coverage->start( - new BankAccountTest('testDepositWithdrawMoney') - ); - $coverage->stop(); - - return $coverage; - } - - protected function getExpectedDataArrayForBankAccount() - { - return array( - TEST_FILES_PATH . 'BankAccount.php' => array( - 8 => array( - 0 => 'BankAccountTest::testBalanceIsInitiallyZero', - 1 => 'BankAccountTest::testDepositWithdrawMoney' - ), - 9 => NULL, - 13 => array(), - 14 => array(), - 15 => array(), - 16 => array(), - 18 => array(), - 22 => array( - 0 => 'BankAccountTest::testBalanceCannotBecomeNegative2', - 1 => 'BankAccountTest::testDepositWithdrawMoney' - ), - 24 => array( - 0 => 'BankAccountTest::testDepositWithdrawMoney', - ), - 25 => NULL, - 29 => array( - 0 => 'BankAccountTest::testBalanceCannotBecomeNegative', - 1 => 'BankAccountTest::testDepositWithdrawMoney' - ), - 31 => array( - 0 => 'BankAccountTest::testDepositWithdrawMoney' - ), - 32 => NULL - ) - ); - } - - protected function getCoverageForFileWithIgnoredLines() - { - $coverage = new PHP_CodeCoverage( - $this->setUpXdebugStubForFileWithIgnoredLines(), - new PHP_CodeCoverage_Filter - ); - - $coverage->start('FileWithIgnoredLines', TRUE); - $coverage->stop(); - - return $coverage; - } - - protected function setUpXdebugStubForFileWithIgnoredLines() - { - $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug'); - $stub->expects($this->any()) - ->method('stop') - ->will($this->returnValue( - array( - TEST_FILES_PATH . 'source_with_ignore.php' => array( - 2 => 1, - 4 => -1, - 6 => -1, - 7 => 1 - ) - ) - )); - - return $stub; - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount-clover.xml b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount-clover.xml deleted file mode 100644 index 578a7cc..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount-clover.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount.php deleted file mode 100644 index 4238c15..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccount.php +++ /dev/null @@ -1,33 +0,0 @@ -balance; - } - - protected function setBalance($balance) - { - if ($balance >= 0) { - $this->balance = $balance; - } else { - throw new RuntimeException; - } - } - - public function depositMoney($balance) - { - $this->setBalance($this->getBalance() + $balance); - - return $this->getBalance(); - } - - public function withdrawMoney($balance) - { - $this->setBalance($this->getBalance() - $balance); - - return $this->getBalance(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccountTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccountTest.php deleted file mode 100644 index 827cd24..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/BankAccountTest.php +++ /dev/null @@ -1,70 +0,0 @@ -ba = new BankAccount; - } - - /** - * @covers BankAccount::getBalance - */ - public function testBalanceIsInitiallyZero() - { - $this->assertEquals(0, $this->ba->getBalance()); - } - - /** - * @covers BankAccount::withdrawMoney - */ - public function testBalanceCannotBecomeNegative() - { - try { - $this->ba->withdrawMoney(1); - } - - catch (RuntimeException $e) { - $this->assertEquals(0, $this->ba->getBalance()); - - return; - } - - $this->fail(); - } - - /** - * @covers BankAccount::depositMoney - */ - public function testBalanceCannotBecomeNegative2() - { - try { - $this->ba->depositMoney(-1); - } - - catch (RuntimeException $e) { - $this->assertEquals(0, $this->ba->getBalance()); - - return; - } - - $this->fail(); - } - - /** - * @covers BankAccount::getBalance - * @covers BankAccount::depositMoney - * @covers BankAccount::withdrawMoney - */ - public function testDepositWithdrawMoney() - { - $this->assertEquals(0, $this->ba->getBalance()); - $this->ba->depositMoney(1); - $this->assertEquals(1, $this->ba->getBalance()); - $this->ba->withdrawMoney(1); - $this->assertEquals(0, $this->ba->getBalance()); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassExtendedTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassExtendedTest.php deleted file mode 100644 index df12d34..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassExtendedTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassTest.php deleted file mode 100644 index 7f569ae..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageClassTest.php +++ /dev/null @@ -1,12 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageFunctionTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageFunctionTest.php deleted file mode 100644 index c621fd2..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageFunctionTest.php +++ /dev/null @@ -1,11 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNoneTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNoneTest.php deleted file mode 100644 index 0b414c2..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNoneTest.php +++ /dev/null @@ -1,9 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPrivateTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPrivateTest.php deleted file mode 100644 index 12b56e8..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPrivateTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotProtectedTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotProtectedTest.php deleted file mode 100644 index c69d261..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotProtectedTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPublicTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPublicTest.php deleted file mode 100644 index aebfe4b..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageNotPublicTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePrivateTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePrivateTest.php deleted file mode 100644 index f09560d..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePrivateTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageProtectedTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageProtectedTest.php deleted file mode 100644 index 9b3acbf..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoverageProtectedTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePublicTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePublicTest.php deleted file mode 100644 index 480a522..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveragePublicTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredClass.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredClass.php deleted file mode 100644 index f382ce9..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredClass.php +++ /dev/null @@ -1,36 +0,0 @@ -privateMethod(); - } - - public function publicMethod() - { - $this->protectedMethod(); - } -} - -class CoveredClass extends CoveredParentClass -{ - private function privateMethod() - { - } - - protected function protectedMethod() - { - parent::protectedMethod(); - $this->privateMethod(); - } - - public function publicMethod() - { - parent::publicMethod(); - $this->protectedMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredFunction.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredFunction.php deleted file mode 100644 index 9989eb0..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/CoveredFunction.php +++ /dev/null @@ -1,4 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageClassTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageClassTest.php deleted file mode 100644 index 63912c0..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageClassTest.php +++ /dev/null @@ -1,12 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageMethodTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageMethodTest.php deleted file mode 100644 index 35dfb8b..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageMethodTest.php +++ /dev/null @@ -1,12 +0,0 @@ -publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPrivateTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPrivateTest.php deleted file mode 100644 index 552c9ec..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPrivateTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotProtectedTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotProtectedTest.php deleted file mode 100644 index 33fc8c7..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotProtectedTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPublicTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPublicTest.php deleted file mode 100644 index ccbc500..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageNotPublicTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePrivateTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePrivateTest.php deleted file mode 100644 index cce7ba9..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePrivateTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageProtectedTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageProtectedTest.php deleted file mode 100644 index dbbcc1c..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoverageProtectedTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePublicTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePublicTest.php deleted file mode 100644 index bf1bff8..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveragePublicTest.php +++ /dev/null @@ -1,12 +0,0 @@ - - */ - public function testSomething() - { - $o = new Foo\CoveredClass; - $o->publicMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveredClass.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveredClass.php deleted file mode 100644 index 5bd0ddf..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NamespaceCoveredClass.php +++ /dev/null @@ -1,38 +0,0 @@ -privateMethod(); - } - - public function publicMethod() - { - $this->protectedMethod(); - } -} - -class CoveredClass extends CoveredParentClass -{ - private function privateMethod() - { - } - - protected function protectedMethod() - { - parent::protectedMethod(); - $this->privateMethod(); - } - - public function publicMethod() - { - parent::publicMethod(); - $this->protectedMethod(); - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NotExistingCoveredElementTest.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NotExistingCoveredElementTest.php deleted file mode 100644 index be07ef4..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/NotExistingCoveredElementTest.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ - public function testThree() - { - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/ignored-lines-clover.xml b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/ignored-lines-clover.xml deleted file mode 100644 index ed6f0c7..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/ignored-lines-clover.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/source_with_ignore.php b/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/source_with_ignore.php deleted file mode 100644 index b40f136..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/Tests/_files/source_with_ignore.php +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php b/vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php deleted file mode 100644 index bf9d520..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php +++ /dev/null @@ -1,22 +0,0 @@ -getTokens(); - - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE || - $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - - $phpcsFile->addError( - 'Concatenation operator must be surrounded by whitespace', - $stackPtr - ); - } - } -} diff --git a/vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/ruleset.xml b/vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/ruleset.xml deleted file mode 100644 index 402f214..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/build/PHPCS/ruleset.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - Sebastian Bergmann's coding standard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/build/phpmd.xml b/vendor/eher/phpunit/src/php-code-coverage/build/phpmd.xml deleted file mode 100644 index 23ecb8b..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/build/phpmd.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - Sebastian Bergmann's ruleset - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/package.xml b/vendor/eher/phpunit/src/php-code-coverage/package.xml deleted file mode 100644 index b95d906..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/package.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - PHP_CodeCoverage - pear.phpunit.de - Library that provides collection, processing, and rendering functionality for PHP code coverage information. - Library that provides collection, processing, and rendering functionality for PHP code coverage information. - - Sebastian Bergmann - sb - sb@sebastian-bergmann.de - yes - - 2012-02-23 - - 1.1.2 - 1.1.0 - - - stable - stable - - BSD License - http://github.com/sebastianbergmann/php-code-coverage/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.2.7 - - - 1.9.4 - - - File_Iterator - pear.phpunit.de - 1.3.0 - - - PHP_TokenStream - pear.phpunit.de - 1.1.0 - - - Text_Template - pear.phpunit.de - 1.1.1 - - - - - dom - - - reflection - - - spl - - - xdebug - 2.0.5 - - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/phpunit.xml.dist b/vendor/eher/phpunit/src/php-code-coverage/phpunit.xml.dist deleted file mode 100644 index 31c6172..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/phpunit.xml.dist +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - Tests/PHP - - - - - - - - - - - - PHP - - PHP/CodeCoverage/Autoload.php - - - - diff --git a/vendor/eher/phpunit/src/php-code-coverage/scripts/auto_append.php b/vendor/eher/phpunit/src/php-code-coverage/scripts/auto_append.php deleted file mode 100644 index 6cd768d..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/scripts/auto_append.php +++ /dev/null @@ -1,5 +0,0 @@ -stop(); - -$writer = new PHP_CodeCoverage_Report_HTML; -$writer->process($coverage, '/tmp/coverage'); diff --git a/vendor/eher/phpunit/src/php-code-coverage/scripts/auto_prepend.php b/vendor/eher/phpunit/src/php-code-coverage/scripts/auto_prepend.php deleted file mode 100644 index 7a8887a..0000000 --- a/vendor/eher/phpunit/src/php-code-coverage/scripts/auto_prepend.php +++ /dev/null @@ -1,10 +0,0 @@ -filter(); - -$filter->addFileToBlacklist(__FILE__); -$filter->addFileToBlacklist(dirname(__FILE__) . '/auto_append.php'); - -$coverage->start($_SERVER['SCRIPT_FILENAME']); diff --git a/vendor/eher/phpunit/src/php-file-iterator/.gitattributes b/vendor/eher/phpunit/src/php-file-iterator/.gitattributes deleted file mode 100644 index 461090b..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/eher/phpunit/src/php-file-iterator/.gitignore b/vendor/eher/phpunit/src/php-file-iterator/.gitignore deleted file mode 100644 index a741983..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -build/api -build/code-browser -build/coverage -build/logs -build/pdepend -cache.properties -phpunit.xml diff --git a/vendor/eher/phpunit/src/php-file-iterator/ChangeLog.markdown b/vendor/eher/phpunit/src/php-file-iterator/ChangeLog.markdown deleted file mode 100644 index 16f0039..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/ChangeLog.markdown +++ /dev/null @@ -1,16 +0,0 @@ -File_Iterator 1.3 -================= - -This is the list of changes for the File_Iterator 1.3 release series. - -File_Iterator 1.3.1 -------------------- - -* Fixed infinite loop in `File_Iterator_Facade::getCommonPath()` for empty directories. - -File_Iterator 1.3.0 -------------------- - -* Added `File_Iterator_Facade` for the most common use case. -* Moved `File_Iterator_Factory::getFilesAsArray()` to `File_Iterator_Facade::getFilesAsArray()`. -* `File_Iterator_Factory` is no longer static. diff --git a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator.php b/vendor/eher/phpunit/src/php-file-iterator/File/Iterator.php deleted file mode 100644 index e585592..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator.php +++ /dev/null @@ -1,196 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package File - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -/** - * FilterIterator implementation that filters files based on prefix(es) and/or - * suffix(es). Hidden files and files from hidden directories are also filtered. - * - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.3.1 - * @link http://github.com/sebastianbergmann/php-file-iterator/tree - * @since Class available since Release 1.0.0 - */ -class File_Iterator extends FilterIterator -{ - const PREFIX = 0; - const SUFFIX = 1; - - /** - * @var array - */ - protected $suffixes = array(); - - /** - * @var array - */ - protected $prefixes = array(); - - /** - * @var array - */ - protected $exclude = array(); - - /** - * @var string - */ - protected $basepath; - - /** - * @param Iterator $iterator - * @param array $suffixes - * @param array $prefixes - * @param array $exclude - * @param string $basepath - */ - public function __construct(Iterator $iterator, array $suffixes = array(), array $prefixes = array(), array $exclude = array(), $basepath = NULL) - { - $exclude = array_filter(array_map('realpath', $exclude)); - - if ($basepath !== NULL) { - $basepath = realpath($basepath); - } - - if ($basepath === FALSE) { - $basepath = NULL; - } else { - foreach ($exclude as &$_exclude) { - $_exclude = str_replace($basepath, '', $_exclude); - } - } - - $this->prefixes = $prefixes; - $this->suffixes = $suffixes; - $this->exclude = $exclude; - $this->basepath = $basepath; - - parent::__construct($iterator); - } - - /** - * @return boolean - */ - public function accept() - { - $current = $this->getInnerIterator()->current(); - $filename = $current->getFilename(); - $realpath = $current->getRealPath(); - - if ($this->basepath !== NULL) { - $realpath = str_replace($this->basepath, '', $realpath); - } - - // Filter files in hidden directories. - if (preg_match('=/\.[^/]*/=', $realpath)) { - return FALSE; - } - - return $this->acceptPath($realpath) && - $this->acceptPrefix($filename) && - $this->acceptSuffix($filename); - } - - /** - * @param string $path - * @return boolean - * @since Method available since Release 1.1.0 - */ - protected function acceptPath($path) - { - foreach ($this->exclude as $exclude) { - if (strpos($path, $exclude) === 0) { - return FALSE; - } - } - - return TRUE; - } - - /** - * @param string $filename - * @return boolean - * @since Method available since Release 1.1.0 - */ - protected function acceptPrefix($filename) - { - return $this->acceptSubString($filename, $this->prefixes, self::PREFIX); - } - - /** - * @param string $filename - * @return boolean - * @since Method available since Release 1.1.0 - */ - protected function acceptSuffix($filename) - { - return $this->acceptSubString($filename, $this->suffixes, self::SUFFIX); - } - - /** - * @param string $filename - * @param array $subString - * @param integer $type - * @return boolean - * @since Method available since Release 1.1.0 - */ - protected function acceptSubString($filename, array $subStrings, $type) - { - if (empty($subStrings)) { - return TRUE; - } - - $matched = FALSE; - - foreach ($subStrings as $string) { - if (($type == self::PREFIX && strpos($filename, $string) === 0) || - ($type == self::SUFFIX && - substr($filename, -1 * strlen($string)) == $string)) { - $matched = TRUE; - break; - } - } - - return $matched; - } -} diff --git a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php b/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php deleted file mode 100644 index d20d9c6..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package File - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.3.0 - */ - -function file_iterator_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - 'file_iterator' => '/Iterator.php', - 'file_iterator_facade' => '/Iterator/Facade.php', - 'file_iterator_factory' => '/Iterator/Factory.php' - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('file_iterator_autoload'); diff --git a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php.in b/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php.in deleted file mode 100644 index 6763c6e..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Autoload.php.in +++ /dev/null @@ -1,73 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package File - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.3.0 - */ - -function file_iterator_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - ___CLASSLIST___ - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('file_iterator_autoload'); diff --git a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Facade.php b/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Facade.php deleted file mode 100644 index 662f2cd..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Facade.php +++ /dev/null @@ -1,161 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package File - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.3.0 - */ - -/** - * Façade implementation that uses File_Iterator_Factory to create a - * File_Iterator that operates on an AppendIterator that contains an - * RecursiveDirectoryIterator for each given path. The list of unique - * files is returned as an array. - * - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.3.1 - * @link http://github.com/sebastianbergmann/php-file-iterator/tree - * @since Class available since Release 1.3.0 - */ -class File_Iterator_Facade -{ - /** - * @param array|string $paths - * @param array|string $suffixes - * @param array|string $prefixes - * @param array $exclude - * @param boolean $commonPath - * @return array - */ - public function getFilesAsArray($paths, $suffixes = '', $prefixes = '', array $exclude = array(), $commonPath = FALSE) - { - if (is_string($paths)) { - $paths = array($paths); - } - - $factory = new File_Iterator_Factory; - $iterator = $factory->getFileIterator( - $paths, $suffixes, $prefixes, $exclude - ); - - $files = array(); - - foreach ($iterator as $file) { - $file = $file->getRealPath(); - - if ($file) { - $files[] = $file; - } - } - - foreach ($paths as $path) { - if (is_file($path)) { - $files[] = realpath($path); - } - } - - $files = array_unique($files); - sort($files); - - if ($commonPath) { - return array( - 'commonPath' => $this->getCommonPath($files), - 'files' => $files - ); - } else { - return $files; - } - } - - /** - * Returns the common path of a set of files. - * - * @param array $files - * @return string - */ - protected function getCommonPath(array $files) - { - $count = count($files); - - if ($count == 0) { - return ''; - } - - if ($count == 1) { - return dirname($files[0]) . DIRECTORY_SEPARATOR; - } - - $_files = array(); - - foreach ($files as $file) { - $_files[] = $_fileParts = explode(DIRECTORY_SEPARATOR, $file); - - if (empty($_fileParts[0])) { - $_fileParts[0] = DIRECTORY_SEPARATOR; - } - } - - $common = ''; - $done = FALSE; - $j = 0; - $count--; - - while (!$done) { - for ($i = 0; $i < $count; $i++) { - if ($_files[$i][$j] != $_files[$i+1][$j]) { - $done = TRUE; - break; - } - } - - if (!$done) { - $common .= $_files[0][$j]; - - if ($j > 0) { - $common .= DIRECTORY_SEPARATOR; - } - } - - $j++; - } - - return DIRECTORY_SEPARATOR . $common; - } -} diff --git a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Factory.php b/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Factory.php deleted file mode 100644 index 5d66f68..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/File/Iterator/Factory.php +++ /dev/null @@ -1,120 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package File - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.1.0 - */ - -/** - * Factory Method implementation that creates a File_Iterator that operates on - * an AppendIterator that contains an RecursiveDirectoryIterator for each given - * path. - * - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.3.1 - * @link http://github.com/sebastianbergmann/php-file-iterator/tree - * @since Class available since Release 1.1.0 - */ -class File_Iterator_Factory -{ - /** - * @param array|string $paths - * @param array|string $suffixes - * @param array|string $prefixes - * @param array $exclude - * @return AppendIterator - */ - public function getFileIterator($paths, $suffixes = '', $prefixes = '', array $exclude = array()) - { - if (is_string($paths)) { - $paths = array($paths); - } - - $_paths = array(); - - foreach ($paths as $path) { - if ($locals = glob($path, GLOB_ONLYDIR)) { - $_paths = array_merge($_paths, $locals); - } else { - $_paths[] = $path; - } - } - - $paths = $_paths; - unset($_paths); - - if (is_string($prefixes)) { - if ($prefixes != '') { - $prefixes = array($prefixes); - } else { - $prefixes = array(); - } - } - - if (is_string($suffixes)) { - if ($suffixes != '') { - $suffixes = array($suffixes); - } else { - $suffixes = array(); - } - } - - $iterator = new AppendIterator; - - foreach ($paths as $path) { - if (is_dir($path)) { - $iterator->append( - new File_Iterator( - new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($path) - ), - $suffixes, - $prefixes, - $exclude, - $path - ) - ); - } - } - - return $iterator; - } -} diff --git a/vendor/eher/phpunit/src/php-file-iterator/LICENSE b/vendor/eher/phpunit/src/php-file-iterator/LICENSE deleted file mode 100644 index 58c5743..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -File_Iterator - -Copyright (c) 2009-2012, Sebastian Bergmann . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/eher/phpunit/src/php-file-iterator/README.markdown b/vendor/eher/phpunit/src/php-file-iterator/README.markdown deleted file mode 100644 index c8971c2..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/README.markdown +++ /dev/null @@ -1,23 +0,0 @@ -File_Iterator -============= - -Installation ------------- - -File_Iterator should be installed using the [PEAR Installer](http://pear.php.net/). This installer is the backbone of PEAR, which provides a distribution system for PHP packages, and is shipped with every release of PHP since version 4.3.0. - -The PEAR channel (`pear.phpunit.de`) that is used to distribute File_Iterator needs to be registered with the local PEAR environment: - - sb@ubuntu ~ % pear channel-discover pear.phpunit.de - Adding Channel "pear.phpunit.de" succeeded - Discovery of channel "pear.phpunit.de" succeeded - -This has to be done only once. Now the PEAR Installer can be used to install packages from the PHPUnit channel: - - sb@vmware ~ % pear install phpunit/File_Iterator - downloading File_Iterator-1.1.1.tgz ... - Starting to download File_Iterator-1.1.1.tgz (3,173 bytes) - ....done: 3,173 bytes - install ok: channel://pear.phpunit.de/File_Iterator-1.1.1 - -After the installation you can find the File_Iterator source files inside your local PEAR directory; the path is usually `/usr/lib/php/File`. diff --git a/vendor/eher/phpunit/src/php-file-iterator/build.xml b/vendor/eher/phpunit/src/php-file-iterator/build.xml deleted file mode 100644 index 3a83653..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/build.xml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php b/vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php deleted file mode 100644 index bf9d520..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php +++ /dev/null @@ -1,22 +0,0 @@ -getTokens(); - - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE || - $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - - $phpcsFile->addError( - 'Concatenation operator must be surrounded by whitespace', - $stackPtr - ); - } - } -} diff --git a/vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/ruleset.xml b/vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/ruleset.xml deleted file mode 100644 index 402f214..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/build/PHPCS/ruleset.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - Sebastian Bergmann's coding standard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-file-iterator/build/phpmd.xml b/vendor/eher/phpunit/src/php-file-iterator/build/phpmd.xml deleted file mode 100644 index 23ecb8b..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/build/phpmd.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - Sebastian Bergmann's ruleset - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-file-iterator/package.xml b/vendor/eher/phpunit/src/php-file-iterator/package.xml deleted file mode 100644 index 545a82b..0000000 --- a/vendor/eher/phpunit/src/php-file-iterator/package.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - File_Iterator - pear.phpunit.de - FilterIterator implementation that filters files based on a list of suffixes. - FilterIterator implementation that filters files based on a list of suffixes. - - Sebastian Bergmann - sb - sb@sebastian-bergmann.de - yes - - 2012-01-10 - - 1.3.1 - 1.3.0 - - - stable - stable - - The BSD 3-Clause License - http://github.com/sebastianbergmann/php-file-iterator/tree - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.2.7 - - - 1.9.2 - - - - - diff --git a/vendor/eher/phpunit/src/php-text-template/.gitattributes b/vendor/eher/phpunit/src/php-text-template/.gitattributes deleted file mode 100644 index 461090b..0000000 --- a/vendor/eher/phpunit/src/php-text-template/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/eher/phpunit/src/php-text-template/.gitignore b/vendor/eher/phpunit/src/php-text-template/.gitignore deleted file mode 100644 index a741983..0000000 --- a/vendor/eher/phpunit/src/php-text-template/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -build/api -build/code-browser -build/coverage -build/logs -build/pdepend -cache.properties -phpunit.xml diff --git a/vendor/eher/phpunit/src/php-text-template/ChangeLog.markdown b/vendor/eher/phpunit/src/php-text-template/ChangeLog.markdown deleted file mode 100644 index 5f35967..0000000 --- a/vendor/eher/phpunit/src/php-text-template/ChangeLog.markdown +++ /dev/null @@ -1,9 +0,0 @@ -Text_Template 1.1 -================= - -This is the list of changes for the Text_Template 1.1 release series. - -Text_Template 1.1.1 -------------------- - -* No changes. diff --git a/vendor/eher/phpunit/src/php-text-template/LICENSE b/vendor/eher/phpunit/src/php-text-template/LICENSE deleted file mode 100644 index af2a713..0000000 --- a/vendor/eher/phpunit/src/php-text-template/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -Text_Template - -Copyright (c) 2009-2012, Sebastian Bergmann . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/eher/phpunit/src/php-text-template/README.markdown b/vendor/eher/phpunit/src/php-text-template/README.markdown deleted file mode 100644 index 0d60da9..0000000 --- a/vendor/eher/phpunit/src/php-text-template/README.markdown +++ /dev/null @@ -1,23 +0,0 @@ -Text_Template -============= - -Installation ------------- - -Text_Template should be installed using the [PEAR Installer](http://pear.php.net/). This installer is the backbone of PEAR, which provides a distribution system for PHP packages, and is shipped with every release of PHP since version 4.3.0. - -The PEAR channel (`pear.phpunit.de`) that is used to distribute Text_Template needs to be registered with the local PEAR environment: - - sb@ubuntu ~ % pear channel-discover pear.phpunit.de - Adding Channel "pear.phpunit.de" succeeded - Discovery of channel "pear.phpunit.de" succeeded - -This has to be done only once. Now the PEAR Installer can be used to install packages from the PHPUnit channel: - - sb@vmware ~ % pear install phpunit/Text_Template - downloading Text_Template-1.0.0.tgz ... - Starting to download Text_Template-1.0.0.tgz (2,493 bytes) - ....done: 2,493 bytes - install ok: channel://pear.phpunit.de/Text_Template-1.0.0 - -After the installation you can find the Text_Template source files inside your local PEAR directory; the path is usually `/usr/lib/php/Text`. diff --git a/vendor/eher/phpunit/src/php-text-template/Text/Template.php b/vendor/eher/phpunit/src/php-text-template/Text/Template.php deleted file mode 100644 index 736fae3..0000000 --- a/vendor/eher/phpunit/src/php-text-template/Text/Template.php +++ /dev/null @@ -1,153 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category Text - * @package Template - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-text-template - * @since File available since Release 1.0.0 - */ - -/** - * A simple template engine. - * - * @category Text - * @package Template - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.1 - * @link http://github.com/sebastianbergmann/php-text-template - * @since Class available since Release 1.0.0 - */ -class Text_Template -{ - /** - * @var string - */ - protected $template = ''; - - /** - * @var array - */ - protected $values = array(); - - /** - * Constructor. - * - * @param string $file - * @throws InvalidArgumentException - */ - public function __construct($file = '') - { - $this->setFile($file); - } - - /** - * Sets the template file. - * - * @param string $file - * @throws InvalidArgumentException - */ - public function setFile($file) - { - $distFile = $file . '.dist'; - - if (file_exists($file)) { - $this->template = file_get_contents($file); - } - - else if (file_exists($distFile)) { - $this->template = file_get_contents($distFile); - } - - else { - throw new InvalidArgumentException( - 'Template file could not be loaded.' - ); - } - } - - /** - * Sets one or more template variables. - * - * @param array $values - * @param boolean $merge - */ - public function setVar(array $values, $merge = TRUE) - { - if (!$merge || empty($this->values)) { - $this->values = $values; - } else { - $this->values = array_merge($this->values, $values); - } - } - - /** - * Renders the template and returns the result. - * - * @return string - */ - public function render() - { - $keys = array(); - - foreach ($this->values as $key => $value) { - $keys[] = '{' . $key . '}'; - } - - return str_replace($keys, $this->values, $this->template); - } - - /** - * Renders the template and writes the result to a file. - * - * @param string $target - */ - public function renderTo($target) - { - $fp = @fopen($target, 'wt'); - - if ($fp) { - fwrite($fp, $this->render()); - fclose($fp); - } else { - throw new RuntimeException('Could not write to ' . $target . '.'); - } - } -} diff --git a/vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php b/vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php deleted file mode 100644 index 981b98d..0000000 --- a/vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category Text - * @package Template - * @author Sebastian Bergmann - * @copyright 2009-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-text-template - * @since File available since Release 1.1.0 - */ - -function text_template_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - 'text_template' => '/Template.php' - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('text_template_autoload'); diff --git a/vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php.in b/vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php.in deleted file mode 100644 index dac06a9..0000000 --- a/vendor/eher/phpunit/src/php-text-template/Text/Template/Autoload.php.in +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category Text - * @package Template - * @author Sebastian Bergmann - * @copyright 2009-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-text-template - * @since File available since Release 1.1.0 - */ - -function text_template_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - ___CLASSLIST___ - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('text_template_autoload'); diff --git a/vendor/eher/phpunit/src/php-text-template/build.xml b/vendor/eher/phpunit/src/php-text-template/build.xml deleted file mode 100644 index d2a4cba..0000000 --- a/vendor/eher/phpunit/src/php-text-template/build.xml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-text-template/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php b/vendor/eher/phpunit/src/php-text-template/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php deleted file mode 100644 index bf9d520..0000000 --- a/vendor/eher/phpunit/src/php-text-template/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php +++ /dev/null @@ -1,22 +0,0 @@ -getTokens(); - - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE || - $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - - $phpcsFile->addError( - 'Concatenation operator must be surrounded by whitespace', - $stackPtr - ); - } - } -} diff --git a/vendor/eher/phpunit/src/php-text-template/build/PHPCS/ruleset.xml b/vendor/eher/phpunit/src/php-text-template/build/PHPCS/ruleset.xml deleted file mode 100644 index 402f214..0000000 --- a/vendor/eher/phpunit/src/php-text-template/build/PHPCS/ruleset.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - Sebastian Bergmann's coding standard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-text-template/build/phpmd.xml b/vendor/eher/phpunit/src/php-text-template/build/phpmd.xml deleted file mode 100644 index 23ecb8b..0000000 --- a/vendor/eher/phpunit/src/php-text-template/build/phpmd.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - Sebastian Bergmann's ruleset - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-text-template/package.xml b/vendor/eher/phpunit/src/php-text-template/package.xml deleted file mode 100644 index da8741f..0000000 --- a/vendor/eher/phpunit/src/php-text-template/package.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - Text_Template - pear.phpunit.de - Simple template engine. - Simple template engine. - - Sebastian Bergmann - sb - sb@sebastian-bergmann.de - yes - - 2011-10-31 - - 1.1.1 - 1.1.0 - - - stable - stable - - The BSD 3-Clause License - http://github.com/sebastianbergmann/php-text-template - - - - - - - - - - - - - - - - - - - - - 5.2.7 - - - 1.9.4 - - - - - diff --git a/vendor/eher/phpunit/src/php-timer/.gitattributes b/vendor/eher/phpunit/src/php-timer/.gitattributes deleted file mode 100644 index 461090b..0000000 --- a/vendor/eher/phpunit/src/php-timer/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/eher/phpunit/src/php-timer/.gitignore b/vendor/eher/phpunit/src/php-timer/.gitignore deleted file mode 100644 index a741983..0000000 --- a/vendor/eher/phpunit/src/php-timer/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -build/api -build/code-browser -build/coverage -build/logs -build/pdepend -cache.properties -phpunit.xml diff --git a/vendor/eher/phpunit/src/php-timer/ChangeLog.markdown b/vendor/eher/phpunit/src/php-timer/ChangeLog.markdown deleted file mode 100644 index b3f4cc8..0000000 --- a/vendor/eher/phpunit/src/php-timer/ChangeLog.markdown +++ /dev/null @@ -1,14 +0,0 @@ -PHP_Timer 1.0 -============= - -This is the list of changes for the PHP_Timer 1.0 release series. - -PHP_Timer 1.0.2 ---------------- - -* `$_SERVER['REQUEST_TIME_FLOAT']` is used when available. - -PHP_Timer 1.0.1 ---------------- - -* No changes. diff --git a/vendor/eher/phpunit/src/php-timer/LICENSE b/vendor/eher/phpunit/src/php-timer/LICENSE deleted file mode 100644 index b51fc64..0000000 --- a/vendor/eher/phpunit/src/php-timer/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -PHP_Timer - -Copyright (c) 2010-2012, Sebastian Bergmann . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/eher/phpunit/src/php-timer/PHP/Timer.php b/vendor/eher/phpunit/src/php-timer/PHP/Timer.php deleted file mode 100644 index 64685d9..0000000 --- a/vendor/eher/phpunit/src/php-timer/PHP/Timer.php +++ /dev/null @@ -1,159 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP - * @subpackage Timer - * @author Sebastian Bergmann - * @copyright 2010-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-timer - * @since File available since Release 1.0.0 - */ - -/** - * Utility class for timing. - * - * @package PHP - * @subpackage Timer - * @author Sebastian Bergmann - * @copyright 2010-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.0.2 - * @link http://github.com/sebastianbergmann/php-timer - * @since Class available since Release 1.0.0 - */ -class PHP_Timer -{ - /** - * @var array - */ - protected static $startTimes = array(); - - /** - * @var float - */ - public static $requestTime; - - /** - * Starts the timer. - */ - public static function start() - { - array_push(self::$startTimes, microtime(TRUE)); - } - - /** - * Stops the timer and returns the elapsed time. - * - * @return float - */ - public static function stop() - { - return microtime(TRUE) - array_pop(self::$startTimes); - } - - /** - * Formats the elapsed time as a string. - * - * @param float $time - * @return string - */ - public static function secondsToTimeString($time) - { - $buffer = ''; - - $hours = sprintf('%02d', ($time >= 3600) ? floor($time / 3600) : 0); - $minutes = sprintf( - '%02d', - ($time >= 60) ? floor($time / 60) - 60 * $hours : 0 - ); - $seconds = sprintf('%02d', $time - 60 * 60 * $hours - 60 * $minutes); - - if ($hours == 0 && $minutes == 0) { - $seconds = sprintf('%1d', $seconds); - - $buffer .= $seconds . ' second'; - - if ($seconds != '1') { - $buffer .= 's'; - } - } else { - if ($hours > 0) { - $buffer = $hours . ':'; - } - - $buffer .= $minutes . ':' . $seconds; - } - - return $buffer; - } - - /** - * Formats the elapsed time since the start of the request as a string. - * - * @return string - */ - public static function timeSinceStartOfRequest() - { - return self::secondsToTimeString(time() - self::$requestTime); - } - - /** - * Returns the resources (time, memory) of the request as a string. - * - * @return string - */ - public static function resourceUsage() - { - return sprintf( - 'Time: %s, Memory: %4.2fMb', - self::timeSinceStartOfRequest(), - memory_get_peak_usage(TRUE) / 1048576 - ); - } -} - -if (isset($_SERVER['REQUEST_TIME_FLOAT'])) { - PHP_Timer::$requestTime = $_SERVER['REQUEST_TIME_FLOAT']; -} - -else if (isset($_SERVER['REQUEST_TIME'])) { - PHP_Timer::$requestTime = $_SERVER['REQUEST_TIME']; -} - -else { - PHP_Timer::$requestTime = time(); -} \ No newline at end of file diff --git a/vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php b/vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php deleted file mode 100644 index 91b1a56..0000000 --- a/vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP - * @subpackage Timer - * @author Sebastian Bergmann - * @copyright 2010-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-timer - * @since File available since Release 1.1.0 - */ - -function php_timer_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - 'php_timer' => '/Timer.php' - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('php_timer_autoload'); diff --git a/vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php.in b/vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php.in deleted file mode 100644 index 48dfa5a..0000000 --- a/vendor/eher/phpunit/src/php-timer/PHP/Timer/Autoload.php.in +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP - * @subpackage Timer - * @author Sebastian Bergmann - * @copyright 2010-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-timer - * @since File available since Release 1.1.0 - */ - -function php_timer_autoload($class = NULL) { - static $classes = NULL; - static $path = NULL; - - if ($classes === NULL) { - $classes = array( - ___CLASSLIST___ - ); - - $path = dirname(dirname(__FILE__)); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('php_timer_autoload'); diff --git a/vendor/eher/phpunit/src/php-timer/README.markdown b/vendor/eher/phpunit/src/php-timer/README.markdown deleted file mode 100644 index 9ff8f78..0000000 --- a/vendor/eher/phpunit/src/php-timer/README.markdown +++ /dev/null @@ -1,23 +0,0 @@ -PHP_Timer -========= - -Installation ------------- - -PHP_Timer should be installed using the [PEAR Installer](http://pear.php.net/). This installer is the backbone of PEAR, which provides a distribution system for PHP packages, and is shipped with every release of PHP since version 4.3.0. - -The PEAR channel (`pear.phpunit.de`) that is used to distribute PHP_Timer needs to be registered with the local PEAR environment: - - sb@ubuntu ~ % pear channel-discover pear.phpunit.de - Adding Channel "pear.phpunit.de" succeeded - Discovery of channel "pear.phpunit.de" succeeded - -This has to be done only once. Now the PEAR Installer can be used to install packages from the PHPUnit channel: - - sb@vmware ~ % pear install phpunit/PHP_Timer - downloading PHP_Timer-1.0.0.tgz ... - Starting to download PHP_Timer-1.0.0.tgz (2,536 bytes) - ....done: 2,536 bytes - install ok: channel://pear.phpunit.de/PHP_Timer-1.0.0 - -After the installation you can find the PHP_Timer source files inside your local PEAR directory; the path is usually `/usr/lib/php/PHP`. diff --git a/vendor/eher/phpunit/src/php-timer/Tests/TimerTest.php b/vendor/eher/phpunit/src/php-timer/Tests/TimerTest.php deleted file mode 100644 index 9963f65..0000000 --- a/vendor/eher/phpunit/src/php-timer/Tests/TimerTest.php +++ /dev/null @@ -1,108 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP - * @subpackage Timer - * @author Sebastian Bergmann - * @copyright 2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-timer - * @since File available since Release 1.0.0 - */ - -require_once dirname(dirname(__FILE__)) . '/PHP/Timer.php'; - -/** - * Tests for PHP_Timer. - * - * @package PHP - * @subpackage Timer - * @author Sebastian Bergmann - * @copyright 2010-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.0.2 - * @link http://github.com/sebastianbergmann/php-timer - * @since Class available since Release 1.0.0 - */ -class PHP_TimerTest extends PHPUnit_Framework_TestCase -{ - /** - * @covers PHP_Timer::start - * @covers PHP_Timer::stop - */ - public function testStartStop() - { - PHP_Timer::start(); - $this->assertInternalType('float', PHP_Timer::stop()); - } - - /** - * @covers PHP_Timer::secondsToTimeString - */ - public function testSecondsToTimeString() - { - $this->assertEquals('0 seconds', PHP_Timer::secondsToTimeString(0)); - $this->assertEquals('1 second', PHP_Timer::secondsToTimeString(1)); - $this->assertEquals('2 seconds', PHP_Timer::secondsToTimeString(2)); - $this->assertEquals('01:00', PHP_Timer::secondsToTimeString(60)); - $this->assertEquals('01:01', PHP_Timer::secondsToTimeString(61)); - $this->assertEquals('02:00', PHP_Timer::secondsToTimeString(120)); - $this->assertEquals('02:01', PHP_Timer::secondsToTimeString(121)); - $this->assertEquals('01:00:00', PHP_Timer::secondsToTimeString(3600)); - $this->assertEquals('01:00:01', PHP_Timer::secondsToTimeString(3601)); - } - - /** - * @covers PHP_Timer::timeSinceStartOfRequest - */ - public function testTimeSinceStartOfRequest() - { - $this->assertStringMatchesFormat( - '%i %s', PHP_Timer::timeSinceStartOfRequest() - ); - } - - - /** - * @covers PHP_Timer::resourceUsage - */ - public function testResourceUsage() - { - $this->assertStringMatchesFormat( - 'Time: %s, Memory: %s', PHP_Timer::resourceUsage() - ); - } -} diff --git a/vendor/eher/phpunit/src/php-timer/build.xml b/vendor/eher/phpunit/src/php-timer/build.xml deleted file mode 100644 index 0b0f809..0000000 --- a/vendor/eher/phpunit/src/php-timer/build.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-timer/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php b/vendor/eher/phpunit/src/php-timer/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php deleted file mode 100644 index bf9d520..0000000 --- a/vendor/eher/phpunit/src/php-timer/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php +++ /dev/null @@ -1,22 +0,0 @@ -getTokens(); - - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE || - $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - - $phpcsFile->addError( - 'Concatenation operator must be surrounded by whitespace', - $stackPtr - ); - } - } -} diff --git a/vendor/eher/phpunit/src/php-timer/build/PHPCS/ruleset.xml b/vendor/eher/phpunit/src/php-timer/build/PHPCS/ruleset.xml deleted file mode 100644 index 402f214..0000000 --- a/vendor/eher/phpunit/src/php-timer/build/PHPCS/ruleset.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - Sebastian Bergmann's coding standard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-timer/build/phpmd.xml b/vendor/eher/phpunit/src/php-timer/build/phpmd.xml deleted file mode 100644 index 23ecb8b..0000000 --- a/vendor/eher/phpunit/src/php-timer/build/phpmd.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - Sebastian Bergmann's ruleset - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-timer/package.xml b/vendor/eher/phpunit/src/php-timer/package.xml deleted file mode 100644 index b1b682d..0000000 --- a/vendor/eher/phpunit/src/php-timer/package.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - PHP_Timer - pear.phpunit.de - Utility class for timing - Utility class for timing - - Sebastian Bergmann - sb - sb@sebastian-bergmann.de - yes - - 2011-09-07 - - 1.0.2 - 1.0.0 - - - stable - stable - - The BSD 3-Clause License - http://github.com/sebastianbergmann/php-timer/blob/master/README.markdown - - - - - - - - - - - - - - - - - - - - - 5.2.7 - - - 1.9.2 - - - - - diff --git a/vendor/eher/phpunit/src/php-timer/phpunit.xml.dist b/vendor/eher/phpunit/src/php-timer/phpunit.xml.dist deleted file mode 100644 index ee82ac8..0000000 --- a/vendor/eher/phpunit/src/php-timer/phpunit.xml.dist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - Tests - - - - - - - - - - - - PHP - - PHP/Timer/Autoload.php - - - - diff --git a/vendor/eher/phpunit/src/php-token-stream/.gitattributes b/vendor/eher/phpunit/src/php-token-stream/.gitattributes deleted file mode 100644 index 461090b..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.php diff=php diff --git a/vendor/eher/phpunit/src/php-token-stream/.gitignore b/vendor/eher/phpunit/src/php-token-stream/.gitignore deleted file mode 100644 index a741983..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -build/api -build/code-browser -build/coverage -build/logs -build/pdepend -cache.properties -phpunit.xml diff --git a/vendor/eher/phpunit/src/php-token-stream/ChangeLog.markdown b/vendor/eher/phpunit/src/php-token-stream/ChangeLog.markdown deleted file mode 100644 index 29215a8..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/ChangeLog.markdown +++ /dev/null @@ -1,25 +0,0 @@ -PHP_TokenStream 1.1 -=================== - -This is the list of changes for the PHP_TokenStream 1.1 release series. - -PHP_TokenStream 1.1.3 ---------------------- - -* Added class for the `T_TRAIT_C` token that was added in PHP 5.4. - -PHP_TokenStream 1.1.2 ---------------------- - -* Added classes for the `T_CALLABLE` and `T_INSTEADOF` tokens that were added in PHP 5.4. -* Added support for namespaced functions. - -PHP_TokenStream 1.1.1 ---------------------- - -* Fixed issue #19: Notice in `PHP_Token_INTERFACE::hasInterfaces()`. - -PHP_TokenStream 1.1.0 ---------------------- - -* Moved `phptok` tool to separate package. diff --git a/vendor/eher/phpunit/src/php-token-stream/LICENSE b/vendor/eher/phpunit/src/php-token-stream/LICENSE deleted file mode 100644 index 471af20..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -PHP_TokenStream - -Copyright (c) 2009-2012, Sebastian Bergmann . -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - * Neither the name of Sebastian Bergmann nor the names of his - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/eher/phpunit/src/php-token-stream/PHP/Token.php b/vendor/eher/phpunit/src/php-token-stream/PHP/Token.php deleted file mode 100644 index f878088..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/PHP/Token.php +++ /dev/null @@ -1,717 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -/** - * A PHP token. - * - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/tree - * @since Class available since Release 1.0.0 - */ -abstract class PHP_Token -{ - /** - * @var string - */ - protected $text; - - /** - * @var integer - */ - protected $line; - - /** - * @var PHP_Token_Stream - */ - protected $tokenStream; - - /** - * @var integer - */ - protected $id; - - /** - * Constructor. - * - * @param string $text - * @param integer $line - * @param PHP_Token_Stream $tokenStream - * @param integer $id - */ - public function __construct($text, $line, PHP_Token_Stream $tokenStream, $id) - { - $this->text = $text; - $this->line = $line; - $this->tokenStream = $tokenStream; - $this->id = $id; - } - - /** - * @return string - */ - public function __toString() - { - return $this->text; - } - - /** - * @return integer - */ - public function getLine() - { - return $this->line; - } -} - -abstract class PHP_TokenWithScope extends PHP_Token -{ - protected $endTokenId; - - /** - * Get the docblock for this token - * - * This method will fetch the docblock belonging to the current token. The - * docblock must be placed on the line directly above the token to be - * recognized. - * - * @return string|null Returns the docblock as a string if found - */ - public function getDocblock() - { - $tokens = $this->tokenStream->tokens(); - $currentLineNumber = $tokens[$this->id]->getLine(); - $prevLineNumber = $currentLineNumber - 1; - - for ($i = $this->id - 1; $i; $i--) { - if (!isset($tokens[$i])) { - return; - } - - if ($tokens[$i] instanceof PHP_Token_FUNCTION || - $tokens[$i] instanceof PHP_Token_CLASS || - $tokens[$i] instanceof PHP_Token_TRAIT) { - // Some other trait, class or function, no docblock can be - // used for the current token - break; - } - - $line = $tokens[$i]->getLine(); - - if ($line == $currentLineNumber || - ($line == $prevLineNumber && - $tokens[$i] instanceof PHP_Token_WHITESPACE)) { - continue; - } - - if ($line < $currentLineNumber && - !$tokens[$i] instanceof PHP_Token_DOC_COMMENT) { - break; - } - - return (string)$tokens[$i]; - } - } - - public function getEndTokenId() - { - $block = 0; - $i = $this->id; - $tokens = $this->tokenStream->tokens(); - - while ($this->endTokenId === NULL && isset($tokens[$i])) { - if ($tokens[$i] instanceof PHP_Token_OPEN_CURLY || - $tokens[$i] instanceof PHP_Token_CURLY_OPEN) { - $block++; - } - - else if ($tokens[$i] instanceof PHP_Token_CLOSE_CURLY) { - $block--; - - if ($block === 0) { - $this->endTokenId = $i; - } - } - - else if (($this instanceof PHP_Token_FUNCTION || - $this instanceof PHP_Token_NAMESPACE) && - $tokens[$i] instanceof PHP_Token_SEMICOLON) { - if ($block === 0) { - $this->endTokenId = $i; - } - } - - $i++; - } - - if ($this->endTokenId === NULL) { - $this->endTokenId = $this->id; - } - - return $this->endTokenId; - } - - public function getEndLine() - { - return $this->tokenStream[$this->getEndTokenId()]->getLine(); - } - -} - -abstract class PHP_TokenWithScopeAndVisibility extends PHP_TokenWithScope { - - public function getVisibility() - { - $tokens = $this->tokenStream->tokens(); - - for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) { - if (isset($tokens[$i]) && - ($tokens[$i] instanceof PHP_Token_PRIVATE || - $tokens[$i] instanceof PHP_Token_PROTECTED || - $tokens[$i] instanceof PHP_Token_PUBLIC)) { - return strtolower( - str_replace('PHP_Token_', '', get_class($tokens[$i])) - ); - } - if (isset($tokens[$i]) && - !($tokens[$i] instanceof PHP_Token_STATIC || - $tokens[$i] instanceof PHP_Token_FINAL || - $tokens[$i] instanceof PHP_Token_ABSTRACT)) { - // no keywords; stop visibility search - break; - } - } - } - - public function getKeywords() - { - $keywords = array(); - $tokens = $this->tokenStream->tokens(); - - for ($i = $this->id - 2; $i > $this->id - 7; $i -= 2) { - if (isset($tokens[$i]) && - ($tokens[$i] instanceof PHP_Token_PRIVATE || - $tokens[$i] instanceof PHP_Token_PROTECTED || - $tokens[$i] instanceof PHP_Token_PUBLIC)) { - continue; - } - - if (isset($tokens[$i]) && - ($tokens[$i] instanceof PHP_Token_STATIC || - $tokens[$i] instanceof PHP_Token_FINAL || - $tokens[$i] instanceof PHP_Token_ABSTRACT)) { - $keywords[] = strtolower( - str_replace('PHP_Token_', '', get_class($tokens[$i])) - ); - } - } - - return implode(',', $keywords); - } - -} - -abstract class PHP_Token_Includes extends PHP_Token -{ - protected $name; - protected $type; - - public function getName() - { - if ($this->name !== NULL) { - return $this->name; - } - - $tokens = $this->tokenStream->tokens(); - - if ($tokens[$this->id+2] instanceof PHP_Token_CONSTANT_ENCAPSED_STRING) { - $this->name = trim($tokens[$this->id+2], "'\""); - $this->type = strtolower( - str_replace('PHP_Token_', '', get_class($tokens[$this->id])) - ); - } - - return $this->name; - } - - public function getType() - { - $this->getName(); - return $this->type; - } -} - -class PHP_Token_REQUIRE_ONCE extends PHP_Token_Includes {} -class PHP_Token_REQUIRE extends PHP_Token_Includes {} -class PHP_Token_EVAL extends PHP_Token {} -class PHP_Token_INCLUDE_ONCE extends PHP_Token_Includes {} -class PHP_Token_INCLUDE extends PHP_Token_Includes {} -class PHP_Token_LOGICAL_OR extends PHP_Token {} -class PHP_Token_LOGICAL_XOR extends PHP_Token {} -class PHP_Token_LOGICAL_AND extends PHP_Token {} -class PHP_Token_PRINT extends PHP_Token {} -class PHP_Token_SR_EQUAL extends PHP_Token {} -class PHP_Token_SL_EQUAL extends PHP_Token {} -class PHP_Token_XOR_EQUAL extends PHP_Token {} -class PHP_Token_OR_EQUAL extends PHP_Token {} -class PHP_Token_AND_EQUAL extends PHP_Token {} -class PHP_Token_MOD_EQUAL extends PHP_Token {} -class PHP_Token_CONCAT_EQUAL extends PHP_Token {} -class PHP_Token_DIV_EQUAL extends PHP_Token {} -class PHP_Token_MUL_EQUAL extends PHP_Token {} -class PHP_Token_MINUS_EQUAL extends PHP_Token {} -class PHP_Token_PLUS_EQUAL extends PHP_Token {} -class PHP_Token_BOOLEAN_OR extends PHP_Token {} -class PHP_Token_BOOLEAN_AND extends PHP_Token {} -class PHP_Token_IS_NOT_IDENTICAL extends PHP_Token {} -class PHP_Token_IS_IDENTICAL extends PHP_Token {} -class PHP_Token_IS_NOT_EQUAL extends PHP_Token {} -class PHP_Token_IS_EQUAL extends PHP_Token {} -class PHP_Token_IS_GREATER_OR_EQUAL extends PHP_Token {} -class PHP_Token_IS_SMALLER_OR_EQUAL extends PHP_Token {} -class PHP_Token_SR extends PHP_Token {} -class PHP_Token_SL extends PHP_Token {} -class PHP_Token_INSTANCEOF extends PHP_Token {} -class PHP_Token_UNSET_CAST extends PHP_Token {} -class PHP_Token_BOOL_CAST extends PHP_Token {} -class PHP_Token_OBJECT_CAST extends PHP_Token {} -class PHP_Token_ARRAY_CAST extends PHP_Token {} -class PHP_Token_STRING_CAST extends PHP_Token {} -class PHP_Token_DOUBLE_CAST extends PHP_Token {} -class PHP_Token_INT_CAST extends PHP_Token {} -class PHP_Token_DEC extends PHP_Token {} -class PHP_Token_INC extends PHP_Token {} -class PHP_Token_CLONE extends PHP_Token {} -class PHP_Token_NEW extends PHP_Token {} -class PHP_Token_EXIT extends PHP_Token {} -class PHP_Token_IF extends PHP_Token {} -class PHP_Token_ELSEIF extends PHP_Token {} -class PHP_Token_ELSE extends PHP_Token {} -class PHP_Token_ENDIF extends PHP_Token {} -class PHP_Token_LNUMBER extends PHP_Token {} -class PHP_Token_DNUMBER extends PHP_Token {} -class PHP_Token_STRING extends PHP_Token {} -class PHP_Token_STRING_VARNAME extends PHP_Token {} -class PHP_Token_VARIABLE extends PHP_Token {} -class PHP_Token_NUM_STRING extends PHP_Token {} -class PHP_Token_INLINE_HTML extends PHP_Token {} -class PHP_Token_CHARACTER extends PHP_Token {} -class PHP_Token_BAD_CHARACTER extends PHP_Token {} -class PHP_Token_ENCAPSED_AND_WHITESPACE extends PHP_Token {} -class PHP_Token_CONSTANT_ENCAPSED_STRING extends PHP_Token {} -class PHP_Token_ECHO extends PHP_Token {} -class PHP_Token_DO extends PHP_Token {} -class PHP_Token_WHILE extends PHP_Token {} -class PHP_Token_ENDWHILE extends PHP_Token {} -class PHP_Token_FOR extends PHP_Token {} -class PHP_Token_ENDFOR extends PHP_Token {} -class PHP_Token_FOREACH extends PHP_Token {} -class PHP_Token_ENDFOREACH extends PHP_Token {} -class PHP_Token_DECLARE extends PHP_Token {} -class PHP_Token_ENDDECLARE extends PHP_Token {} -class PHP_Token_AS extends PHP_Token {} -class PHP_Token_SWITCH extends PHP_Token {} -class PHP_Token_ENDSWITCH extends PHP_Token {} -class PHP_Token_CASE extends PHP_Token {} -class PHP_Token_DEFAULT extends PHP_Token {} -class PHP_Token_BREAK extends PHP_Token {} -class PHP_Token_CONTINUE extends PHP_Token {} -class PHP_Token_GOTO extends PHP_Token {} -class PHP_Token_CALLABLE extends PHP_Token {} -class PHP_Token_INSTEADOF extends PHP_Token {} - -class PHP_Token_FUNCTION extends PHP_TokenWithScopeAndVisibility -{ - protected $arguments; - protected $ccn; - protected $name; - protected $signature; - - public function getArguments() - { - if ($this->arguments !== NULL) { - return $this->arguments; - } - - $this->arguments = array(); - $i = $this->id + 3; - $tokens = $this->tokenStream->tokens(); - $typeHint = NULL; - - while (!$tokens[$i] instanceof PHP_Token_CLOSE_BRACKET) { - if ($tokens[$i] instanceof PHP_Token_STRING) { - $typeHint = (string)$tokens[$i]; - } - - else if ($tokens[$i] instanceof PHP_Token_VARIABLE) { - $this->arguments[(string)$tokens[$i]] = $typeHint; - $typeHint = NULL; - } - - $i++; - } - - return $this->arguments; - } - - public function getName() - { - if ($this->name !== NULL) { - return $this->name; - } - - $tokens = $this->tokenStream->tokens(); - - if ($tokens[$this->id+2] instanceof PHP_Token_STRING) { - $this->name = (string)$tokens[$this->id+2]; - } - - else if ($tokens[$this->id+2] instanceof PHP_Token_AMPERSAND && - $tokens[$this->id+3] instanceof PHP_Token_STRING) { - $this->name = (string)$tokens[$this->id+3]; - } - - else { - $this->name = 'anonymous function'; - } - - if ($this->name != 'anonymous function') { - for ($i = $this->id; $i; --$i) { - if ($tokens[$i] instanceof PHP_Token_NAMESPACE) { - $this->name = $tokens[$i]->getName() . '\\' . $this->name; - break; - } - - if ($tokens[$i] instanceof PHP_Token_INTERFACE) { - break; - } - } - } - - return $this->name; - } - - public function getCCN() - { - if ($this->ccn !== NULL) { - return $this->ccn; - } - - $this->ccn = 1; - $end = $this->getEndTokenId(); - $tokens = $this->tokenStream->tokens(); - - for ($i = $this->id; $i <= $end; $i++) { - switch (get_class($tokens[$i])) { - case 'PHP_Token_IF': - case 'PHP_Token_ELSEIF': - case 'PHP_Token_FOR': - case 'PHP_Token_FOREACH': - case 'PHP_Token_WHILE': - case 'PHP_Token_CASE': - case 'PHP_Token_CATCH': - case 'PHP_Token_BOOLEAN_AND': - case 'PHP_Token_LOGICAL_AND': - case 'PHP_Token_BOOLEAN_OR': - case 'PHP_Token_LOGICAL_OR': - case 'PHP_Token_QUESTION_MARK': { - $this->ccn++; - } - break; - } - } - - return $this->ccn; - } - - public function getSignature() - { - if ($this->signature !== NULL) { - return $this->signature; - } - - if ($this->getName() == 'anonymous function') { - $this->signature = 'anonymous function'; - $i = $this->id + 1; - } else { - $this->signature = ''; - $i = $this->id + 2; - } - - $tokens = $this->tokenStream->tokens(); - - while (!$tokens[$i] instanceof PHP_Token_CLOSE_BRACKET) { - $this->signature .= $tokens[$i++]; - } - - $this->signature .= ')'; - - return $this->signature; - } -} - -class PHP_Token_CONST extends PHP_Token {} -class PHP_Token_RETURN extends PHP_Token {} -class PHP_Token_TRY extends PHP_Token {} -class PHP_Token_CATCH extends PHP_Token {} -class PHP_Token_THROW extends PHP_Token {} -class PHP_Token_USE extends PHP_Token {} -class PHP_Token_GLOBAL extends PHP_Token {} -class PHP_Token_PUBLIC extends PHP_Token {} -class PHP_Token_PROTECTED extends PHP_Token {} -class PHP_Token_PRIVATE extends PHP_Token {} -class PHP_Token_FINAL extends PHP_Token {} -class PHP_Token_ABSTRACT extends PHP_Token {} -class PHP_Token_STATIC extends PHP_Token {} -class PHP_Token_VAR extends PHP_Token {} -class PHP_Token_UNSET extends PHP_Token {} -class PHP_Token_ISSET extends PHP_Token {} -class PHP_Token_EMPTY extends PHP_Token {} -class PHP_Token_HALT_COMPILER extends PHP_Token {} - -class PHP_Token_INTERFACE extends PHP_TokenWithScopeAndVisibility -{ - protected $interfaces; - - public function getName() - { - return (string)$this->tokenStream[$this->id + 2]; - } - - public function hasParent() - { - return $this->tokenStream[$this->id + 4] instanceof PHP_Token_EXTENDS; - } - - public function getPackage() - { - $className = $this->getName(); - $docComment = $this->getDocblock(); - - $result = array( - 'namespace' => '', - 'fullPackage' => '', - 'category' => '', - 'package' => '', - 'subpackage' => '' - ); - - for ($i = $this->id; $i; --$i) { - if ($this->tokenStream[$i] instanceof PHP_Token_NAMESPACE) { - $result['namespace'] = $this->tokenStream[$i]->getName(); - break; - } - } - - if (preg_match('/@category[\s]+([\.\w]+)/', $docComment, $matches)) { - $result['category'] = $matches[1]; - } - - if (preg_match('/@package[\s]+([\.\w]+)/', $docComment, $matches)) { - $result['package'] = $matches[1]; - $result['fullPackage'] = $matches[1]; - } - - if (preg_match('/@subpackage[\s]+([\.\w]+)/', $docComment, $matches)) { - $result['subpackage'] = $matches[1]; - $result['fullPackage'] .= '.' . $matches[1]; - } - - if (empty($result['fullPackage'])) { - $result['fullPackage'] = $this->arrayToName( - explode('_', str_replace('\\', '_', $className)), '.' - ); - } - - return $result; - } - - protected function arrayToName(array $parts, $join = '\\') - { - $result = ''; - - if (count($parts) > 1) { - array_pop($parts); - - $result = join($join, $parts); - } - - return $result; - } - - public function getParent() - { - if (!$this->hasParent()) { - return FALSE; - } - - $i = $this->id + 6; - $tokens = $this->tokenStream->tokens(); - $className = (string)$tokens[$i]; - - while (isset($tokens[$i+1]) && - !$tokens[$i+1] instanceof PHP_Token_WHITESPACE) { - $className .= (string)$tokens[++$i]; - } - - return $className; - } - - public function hasInterfaces() - { - return (isset($this->tokenStream[$this->id + 4]) && - $this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) || - (isset($this->tokenStream[$this->id + 8]) && - $this->tokenStream[$this->id + 8] instanceof PHP_Token_IMPLEMENTS); - } - - public function getInterfaces() - { - if ($this->interfaces !== NULL) { - return $this->interfaces; - } - - if (!$this->hasInterfaces()) { - return ($this->interfaces = FALSE); - } - - if ($this->tokenStream[$this->id + 4] instanceof PHP_Token_IMPLEMENTS) { - $i = $this->id + 3; - } else { - $i = $this->id + 7; - } - - $tokens = $this->tokenStream->tokens(); - - while (!$tokens[$i+1] instanceof PHP_Token_OPEN_CURLY) { - $i++; - - if ($tokens[$i] instanceof PHP_Token_STRING) { - $this->interfaces[] = (string)$tokens[$i]; - } - } - - return $this->interfaces; - } -} - -class PHP_Token_CLASS extends PHP_Token_INTERFACE {} -class PHP_Token_TRAIT extends PHP_Token_INTERFACE {} -class PHP_Token_EXTENDS extends PHP_Token {} -class PHP_Token_IMPLEMENTS extends PHP_Token {} -class PHP_Token_OBJECT_OPERATOR extends PHP_Token {} -class PHP_Token_DOUBLE_ARROW extends PHP_Token {} -class PHP_Token_LIST extends PHP_Token {} -class PHP_Token_ARRAY extends PHP_Token {} -class PHP_Token_CLASS_C extends PHP_Token {} -class PHP_Token_TRAIT_C extends PHP_Token {} -class PHP_Token_METHOD_C extends PHP_Token {} -class PHP_Token_FUNC_C extends PHP_Token {} -class PHP_Token_LINE extends PHP_Token {} -class PHP_Token_FILE extends PHP_Token {} -class PHP_Token_COMMENT extends PHP_Token {} -class PHP_Token_DOC_COMMENT extends PHP_Token {} -class PHP_Token_OPEN_TAG extends PHP_Token {} -class PHP_Token_OPEN_TAG_WITH_ECHO extends PHP_Token {} -class PHP_Token_CLOSE_TAG extends PHP_Token {} -class PHP_Token_WHITESPACE extends PHP_Token {} -class PHP_Token_START_HEREDOC extends PHP_Token {} -class PHP_Token_END_HEREDOC extends PHP_Token {} -class PHP_Token_DOLLAR_OPEN_CURLY_BRACES extends PHP_Token {} -class PHP_Token_CURLY_OPEN extends PHP_Token {} -class PHP_Token_PAAMAYIM_NEKUDOTAYIM extends PHP_Token {} - -class PHP_Token_NAMESPACE extends PHP_TokenWithScope -{ - public function getName() - { - $tokens = $this->tokenStream->tokens(); - $namespace = (string)$tokens[$this->id+2]; - - for ($i = $this->id + 3; ; $i += 2) { - if (isset($tokens[$i]) && - $tokens[$i] instanceof PHP_Token_NS_SEPARATOR) { - $namespace .= '\\' . $tokens[$i+1]; - } else { - break; - } - } - - return $namespace; - } -} - -class PHP_Token_NS_C extends PHP_Token {} -class PHP_Token_DIR extends PHP_Token {} -class PHP_Token_NS_SEPARATOR extends PHP_Token {} -class PHP_Token_DOUBLE_COLON extends PHP_Token {} -class PHP_Token_OPEN_BRACKET extends PHP_Token {} -class PHP_Token_CLOSE_BRACKET extends PHP_Token {} -class PHP_Token_OPEN_SQUARE extends PHP_Token {} -class PHP_Token_CLOSE_SQUARE extends PHP_Token {} -class PHP_Token_OPEN_CURLY extends PHP_Token {} -class PHP_Token_CLOSE_CURLY extends PHP_Token {} -class PHP_Token_SEMICOLON extends PHP_Token {} -class PHP_Token_DOT extends PHP_Token {} -class PHP_Token_COMMA extends PHP_Token {} -class PHP_Token_EQUAL extends PHP_Token {} -class PHP_Token_LT extends PHP_Token {} -class PHP_Token_GT extends PHP_Token {} -class PHP_Token_PLUS extends PHP_Token {} -class PHP_Token_MINUS extends PHP_Token {} -class PHP_Token_MULT extends PHP_Token {} -class PHP_Token_DIV extends PHP_Token {} -class PHP_Token_QUESTION_MARK extends PHP_Token {} -class PHP_Token_EXCLAMATION_MARK extends PHP_Token {} -class PHP_Token_COLON extends PHP_Token {} -class PHP_Token_DOUBLE_QUOTES extends PHP_Token {} -class PHP_Token_AT extends PHP_Token {} -class PHP_Token_AMPERSAND extends PHP_Token {} -class PHP_Token_PERCENT extends PHP_Token {} -class PHP_Token_PIPE extends PHP_Token {} -class PHP_Token_DOLLAR extends PHP_Token {} -class PHP_Token_CARET extends PHP_Token {} -class PHP_Token_TILDE extends PHP_Token {} -class PHP_Token_BACKTICK extends PHP_Token {} diff --git a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream.php b/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream.php deleted file mode 100644 index 60f3d23..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream.php +++ /dev/null @@ -1,568 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -/** - * A stream of PHP tokens. - * - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/tree - * @since Class available since Release 1.0.0 - */ -class PHP_Token_Stream implements ArrayAccess, Countable, SeekableIterator -{ - /** - * @var array - */ - protected static $customTokens = array( - '(' => 'PHP_Token_OPEN_BRACKET', - ')' => 'PHP_Token_CLOSE_BRACKET', - '[' => 'PHP_Token_OPEN_SQUARE', - ']' => 'PHP_Token_CLOSE_SQUARE', - '{' => 'PHP_Token_OPEN_CURLY', - '}' => 'PHP_Token_CLOSE_CURLY', - ';' => 'PHP_Token_SEMICOLON', - '.' => 'PHP_Token_DOT', - ',' => 'PHP_Token_COMMA', - '=' => 'PHP_Token_EQUAL', - '<' => 'PHP_Token_LT', - '>' => 'PHP_Token_GT', - '+' => 'PHP_Token_PLUS', - '-' => 'PHP_Token_MINUS', - '*' => 'PHP_Token_MULT', - '/' => 'PHP_Token_DIV', - '?' => 'PHP_Token_QUESTION_MARK', - '!' => 'PHP_Token_EXCLAMATION_MARK', - ':' => 'PHP_Token_COLON', - '"' => 'PHP_Token_DOUBLE_QUOTES', - '@' => 'PHP_Token_AT', - '&' => 'PHP_Token_AMPERSAND', - '%' => 'PHP_Token_PERCENT', - '|' => 'PHP_Token_PIPE', - '$' => 'PHP_Token_DOLLAR', - '^' => 'PHP_Token_CARET', - '~' => 'PHP_Token_TILDE', - '`' => 'PHP_Token_BACKTICK' - ); - - /** - * @var string - */ - protected $filename; - - /** - * @var array - */ - protected $tokens = array(); - - /** - * @var integer - */ - protected $position = 0; - - /** - * @var array - */ - protected $linesOfCode = array('loc' => 0, 'cloc' => 0, 'ncloc' => 0); - - /** - * @var array - */ - protected $classes; - - /** - * @var array - */ - protected $functions; - - /** - * @var array - */ - protected $includes; - - /** - * @var array - */ - protected $interfaces; - - /** - * @var array - */ - protected $traits; - - /** - * Constructor. - * - * @param string $sourceCode - */ - public function __construct($sourceCode) - { - if (is_file($sourceCode)) { - $this->filename = $sourceCode; - $sourceCode = file_get_contents($sourceCode); - } - - $this->scan($sourceCode); - } - - /** - * Destructor. - */ - public function __destruct() - { - $this->tokens = array(); - } - - /** - * @return string - */ - public function __toString() - { - $buffer = ''; - - foreach ($this as $token) { - $buffer .= $token; - } - - return $buffer; - } - - /** - * @return string - * @since Method available since Release 1.1.0 - */ - public function getFilename() - { - return $this->filename; - } - - /** - * Scans the source for sequences of characters and converts them into a - * stream of tokens. - * - * @param string $sourceCode - */ - protected function scan($sourceCode) - { - $line = 1; - $tokens = token_get_all($sourceCode); - $numTokens = count($tokens); - - for ($i = 0; $i < $numTokens; ++$i) { - $token = $tokens[$i]; - unset($tokens[$i]); - - if (is_array($token)) { - $text = $token[1]; - $tokenClass = 'PHP_Token_' . substr(token_name($token[0]), 2); - } else { - $text = $token; - $tokenClass = self::$customTokens[$token]; - } - - $this->tokens[] = new $tokenClass($text, $line, $this, $i); - $lines = substr_count($text, "\n"); - $line += $lines; - - if ($tokenClass == 'PHP_Token_HALT_COMPILER') { - break; - } - - else if ($tokenClass == 'PHP_Token_COMMENT' || - $tokenClass == 'PHP_Token_DOC_COMMENT') { - $this->linesOfCode['cloc'] += $lines + 1; - } - } - - $this->linesOfCode['loc'] = substr_count($sourceCode, "\n"); - $this->linesOfCode['ncloc'] = $this->linesOfCode['loc'] - - $this->linesOfCode['cloc']; - } - - /** - * @return integer - */ - public function count() - { - return count($this->tokens); - } - - /** - * @return PHP_Token[] - */ - public function tokens() - { - return $this->tokens; - } - - /** - * @return array - */ - public function getClasses() - { - if ($this->classes !== NULL) { - return $this->classes; - } - - $this->parse(); - - return $this->classes; - } - - /** - * @return array - */ - public function getFunctions() - { - if ($this->functions !== NULL) { - return $this->functions; - } - - $this->parse(); - - return $this->functions; - } - - /** - * @return array - */ - public function getInterfaces() - { - if ($this->interfaces !== NULL) { - return $this->interfaces; - } - - $this->parse(); - - return $this->interfaces; - } - - /** - * @return array - * @since Method available since Release 1.1.0 - */ - public function getTraits() - { - if ($this->traits !== NULL) { - return $this->traits; - } - - $this->parse(); - - return $this->traits; - } - - /** - * Gets the names of all files that have been included - * using include(), include_once(), require() or require_once(). - * - * Parameter $categorize set to TRUE causing this function to return a - * multi-dimensional array with categories in the keys of the first dimension - * and constants and their values in the second dimension. - * - * Parameter $category allow to filter following specific inclusion type - * - * @param bool $categorize OPTIONAL - * @param string $category OPTIONAL Either 'require_once', 'require', - * 'include_once', 'include'. - * @return array - * @since Method available since Release 1.1.0 - */ - public function getIncludes($categorize = FALSE, $category = NULL) - { - if ($this->includes === NULL) { - $this->includes = array( - 'require_once' => array(), - 'require' => array(), - 'include_once' => array(), - 'include' => array() - ); - - foreach ($this->tokens as $token) { - switch (get_class($token)) { - case 'PHP_Token_REQUIRE_ONCE': - case 'PHP_Token_REQUIRE': - case 'PHP_Token_INCLUDE_ONCE': - case 'PHP_Token_INCLUDE': { - $this->includes[$token->getType()][] = $token->getName(); - } - break; - } - } - } - - if (isset($this->includes[$category])) { - $includes = $this->includes[$category]; - } - - else if ($categorize === FALSE) { - $includes = array_merge( - $this->includes['require_once'], - $this->includes['require'], - $this->includes['include_once'], - $this->includes['include'] - ); - } else { - $includes = $this->includes; - } - - return $includes; - } - - protected function parse() - { - $this->interfaces = array(); - $this->classes = array(); - $this->traits = array(); - $this->functions = array(); - $class = FALSE; - $classEndLine = FALSE; - $trait = FALSE; - $traitEndLine = FALSE; - $interface = FALSE; - $interfaceEndLine = FALSE; - - foreach ($this->tokens as $token) { - switch (get_class($token)) { - case 'PHP_Token_HALT_COMPILER': { - return; - } - break; - - case 'PHP_Token_INTERFACE': { - $interface = $token->getName(); - $interfaceEndLine = $token->getEndLine(); - - $this->interfaces[$interface] = array( - 'methods' => array(), - 'parent' => $token->getParent(), - 'keywords' => $token->getKeywords(), - 'docblock' => $token->getDocblock(), - 'startLine' => $token->getLine(), - 'endLine' => $interfaceEndLine, - 'package' => $token->getPackage(), - 'file' => $this->filename - ); - } - break; - - case 'PHP_Token_CLASS': - case 'PHP_Token_TRAIT': { - $tmp = array( - 'methods' => array(), - 'parent' => $token->getParent(), - 'interfaces'=> $token->getInterfaces(), - 'keywords' => $token->getKeywords(), - 'docblock' => $token->getDocblock(), - 'startLine' => $token->getLine(), - 'endLine' => $token->getEndLine(), - 'package' => $token->getPackage(), - 'file' => $this->filename - ); - - if ($token instanceof PHP_Token_CLASS) { - $class = $token->getName(); - $classEndLine = $token->getEndLine(); - $this->classes[$class] = $tmp; - } else { - $trait = $token->getName(); - $traitEndLine = $token->getEndLine(); - $this->traits[$trait] = $tmp; - } - } - break; - - case 'PHP_Token_FUNCTION': { - $name = $token->getName(); - $tmp = array( - 'docblock' => $token->getDocblock(), - 'keywords' => $token->getKeywords(), - 'visibility'=> $token->getVisibility(), - 'signature' => $token->getSignature(), - 'startLine' => $token->getLine(), - 'endLine' => $token->getEndLine(), - 'ccn' => $token->getCCN(), - 'file' => $this->filename - ); - - if ($class === FALSE && - $trait === FALSE && - $interface === FALSE) { - $this->functions[$name] = $tmp; - } - - else if ($class !== FALSE) { - $this->classes[$class]['methods'][$name] = $tmp; - } - - else if ($trait !== FALSE) { - $this->traits[$trait]['methods'][$name] = $tmp; - } - - else { - $this->interfaces[$interface]['methods'][$name] = $tmp; - } - } - break; - - case 'PHP_Token_CLOSE_CURLY': { - if ($classEndLine !== FALSE && - $classEndLine == $token->getLine()) { - $class = FALSE; - $classEndLine = FALSE; - } - - else if ($traitEndLine !== FALSE && - $traitEndLine == $token->getLine()) { - $trait = FALSE; - $traitEndLine = FALSE; - } - - else if ($interfaceEndLine !== FALSE && - $interfaceEndLine == $token->getLine()) { - $interface = FALSE; - $interfaceEndLine = FALSE; - } - } - break; - } - } - } - - /** - * @return array - */ - public function getLinesOfCode() - { - return $this->linesOfCode; - } - - /** - */ - public function rewind() - { - $this->position = 0; - } - - /** - * @return boolean - */ - public function valid() - { - return isset($this->tokens[$this->position]); - } - - /** - * @return integer - */ - public function key() - { - return $this->position; - } - - /** - * @return PHP_Token - */ - public function current() - { - return $this->tokens[$this->position]; - } - - /** - */ - public function next() - { - $this->position++; - } - - /** - * @param mixed $offset - */ - public function offsetExists($offset) - { - return isset($this->tokens[$offset]); - } - - /** - * @param mixed $offset - * @return mixed - */ - public function offsetGet($offset) - { - return $this->tokens[$offset]; - } - - /** - * @param mixed $offset - * @param mixed $value - */ - public function offsetSet($offset, $value) - { - $this->tokens[$offset] = $value; - } - - /** - * @param mixed $offset - */ - public function offsetUnset($offset) - { - unset($this->tokens[$offset]); - } - - /** - * Seek to an absolute position. - * - * @param integer $position - * @throws OutOfBoundsException - */ - public function seek($position) - { - $this->position = $position; - - if (!$this->valid()) { - throw new OutOfBoundsException('Invalid seek position'); - } - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php b/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php deleted file mode 100644 index 9bb77ed..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php +++ /dev/null @@ -1,232 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @author Sebastian Bergmann - * @copyright 2009-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-token-stream/tree - * @since File available since Release 1.1.0 - */ - -function php_tokenstream_autoload($class = NULL) -{ - static $classes = NULL; - static $path = NULL;; - - if ($classes === NULL) { - $classes = array( - 'php_token' => '/Token.php', - 'php_token_abstract' => '/Token.php', - 'php_token_ampersand' => '/Token.php', - 'php_token_and_equal' => '/Token.php', - 'php_token_array' => '/Token.php', - 'php_token_array_cast' => '/Token.php', - 'php_token_as' => '/Token.php', - 'php_token_at' => '/Token.php', - 'php_token_backtick' => '/Token.php', - 'php_token_bad_character' => '/Token.php', - 'php_token_bool_cast' => '/Token.php', - 'php_token_boolean_and' => '/Token.php', - 'php_token_boolean_or' => '/Token.php', - 'php_token_break' => '/Token.php', - 'php_token_caret' => '/Token.php', - 'php_token_case' => '/Token.php', - 'php_token_catch' => '/Token.php', - 'php_token_character' => '/Token.php', - 'php_token_class' => '/Token.php', - 'php_token_class_c' => '/Token.php', - 'php_token_clone' => '/Token.php', - 'php_token_close_bracket' => '/Token.php', - 'php_token_close_curly' => '/Token.php', - 'php_token_close_square' => '/Token.php', - 'php_token_close_tag' => '/Token.php', - 'php_token_colon' => '/Token.php', - 'php_token_comma' => '/Token.php', - 'php_token_comment' => '/Token.php', - 'php_token_concat_equal' => '/Token.php', - 'php_token_const' => '/Token.php', - 'php_token_constant_encapsed_string' => '/Token.php', - 'php_token_continue' => '/Token.php', - 'php_token_curly_open' => '/Token.php', - 'php_token_dec' => '/Token.php', - 'php_token_declare' => '/Token.php', - 'php_token_default' => '/Token.php', - 'php_token_dir' => '/Token.php', - 'php_token_div' => '/Token.php', - 'php_token_div_equal' => '/Token.php', - 'php_token_dnumber' => '/Token.php', - 'php_token_do' => '/Token.php', - 'php_token_doc_comment' => '/Token.php', - 'php_token_dollar' => '/Token.php', - 'php_token_dollar_open_curly_braces' => '/Token.php', - 'php_token_dot' => '/Token.php', - 'php_token_double_arrow' => '/Token.php', - 'php_token_double_cast' => '/Token.php', - 'php_token_double_colon' => '/Token.php', - 'php_token_double_quotes' => '/Token.php', - 'php_token_echo' => '/Token.php', - 'php_token_else' => '/Token.php', - 'php_token_elseif' => '/Token.php', - 'php_token_empty' => '/Token.php', - 'php_token_encapsed_and_whitespace' => '/Token.php', - 'php_token_end_heredoc' => '/Token.php', - 'php_token_enddeclare' => '/Token.php', - 'php_token_endfor' => '/Token.php', - 'php_token_endforeach' => '/Token.php', - 'php_token_endif' => '/Token.php', - 'php_token_endswitch' => '/Token.php', - 'php_token_endwhile' => '/Token.php', - 'php_token_equal' => '/Token.php', - 'php_token_eval' => '/Token.php', - 'php_token_exclamation_mark' => '/Token.php', - 'php_token_exit' => '/Token.php', - 'php_token_extends' => '/Token.php', - 'php_token_file' => '/Token.php', - 'php_token_final' => '/Token.php', - 'php_token_for' => '/Token.php', - 'php_token_foreach' => '/Token.php', - 'php_token_func_c' => '/Token.php', - 'php_token_function' => '/Token.php', - 'php_token_global' => '/Token.php', - 'php_token_goto' => '/Token.php', - 'php_token_gt' => '/Token.php', - 'php_token_halt_compiler' => '/Token.php', - 'php_token_if' => '/Token.php', - 'php_token_implements' => '/Token.php', - 'php_token_inc' => '/Token.php', - 'php_token_include' => '/Token.php', - 'php_token_include_once' => '/Token.php', - 'php_token_includes' => '/Token.php', - 'php_token_inline_html' => '/Token.php', - 'php_token_instanceof' => '/Token.php', - 'php_token_int_cast' => '/Token.php', - 'php_token_interface' => '/Token.php', - 'php_token_is_equal' => '/Token.php', - 'php_token_is_greater_or_equal' => '/Token.php', - 'php_token_is_identical' => '/Token.php', - 'php_token_is_not_equal' => '/Token.php', - 'php_token_is_not_identical' => '/Token.php', - 'php_token_is_smaller_or_equal' => '/Token.php', - 'php_token_isset' => '/Token.php', - 'php_token_line' => '/Token.php', - 'php_token_list' => '/Token.php', - 'php_token_lnumber' => '/Token.php', - 'php_token_logical_and' => '/Token.php', - 'php_token_logical_or' => '/Token.php', - 'php_token_logical_xor' => '/Token.php', - 'php_token_lt' => '/Token.php', - 'php_token_method_c' => '/Token.php', - 'php_token_minus' => '/Token.php', - 'php_token_minus_equal' => '/Token.php', - 'php_token_mod_equal' => '/Token.php', - 'php_token_mul_equal' => '/Token.php', - 'php_token_mult' => '/Token.php', - 'php_token_namespace' => '/Token.php', - 'php_token_new' => '/Token.php', - 'php_token_ns_c' => '/Token.php', - 'php_token_ns_separator' => '/Token.php', - 'php_token_num_string' => '/Token.php', - 'php_token_object_cast' => '/Token.php', - 'php_token_object_operator' => '/Token.php', - 'php_token_open_bracket' => '/Token.php', - 'php_token_open_curly' => '/Token.php', - 'php_token_open_square' => '/Token.php', - 'php_token_open_tag' => '/Token.php', - 'php_token_open_tag_with_echo' => '/Token.php', - 'php_token_or_equal' => '/Token.php', - 'php_token_paamayim_nekudotayim' => '/Token.php', - 'php_token_percent' => '/Token.php', - 'php_token_pipe' => '/Token.php', - 'php_token_plus' => '/Token.php', - 'php_token_plus_equal' => '/Token.php', - 'php_token_print' => '/Token.php', - 'php_token_private' => '/Token.php', - 'php_token_protected' => '/Token.php', - 'php_token_public' => '/Token.php', - 'php_token_question_mark' => '/Token.php', - 'php_token_require' => '/Token.php', - 'php_token_require_once' => '/Token.php', - 'php_token_return' => '/Token.php', - 'php_token_semicolon' => '/Token.php', - 'php_token_sl' => '/Token.php', - 'php_token_sl_equal' => '/Token.php', - 'php_token_sr' => '/Token.php', - 'php_token_sr_equal' => '/Token.php', - 'php_token_start_heredoc' => '/Token.php', - 'php_token_static' => '/Token.php', - 'php_token_stream' => '/Token/Stream.php', - 'php_token_stream_cachingfactory' => '/Token/Stream/CachingFactory.php', - 'php_token_string' => '/Token.php', - 'php_token_string_cast' => '/Token.php', - 'php_token_string_varname' => '/Token.php', - 'php_token_switch' => '/Token.php', - 'php_token_throw' => '/Token.php', - 'php_token_tilde' => '/Token.php', - 'php_token_trait' => '/Token.php', - 'php_token_try' => '/Token.php', - 'php_token_unset' => '/Token.php', - 'php_token_unset_cast' => '/Token.php', - 'php_token_use' => '/Token.php', - 'php_token_var' => '/Token.php', - 'php_token_variable' => '/Token.php', - 'php_token_while' => '/Token.php', - 'php_token_whitespace' => '/Token.php', - 'php_token_xor_equal' => '/Token.php', - 'php_tokenwithscope' => '/Token.php' - ); - - $path = dirname(dirname(dirname(__FILE__))); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('php_tokenstream_autoload'); diff --git a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php.in b/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php.in deleted file mode 100644 index 7420ba8..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/Autoload.php.in +++ /dev/null @@ -1,75 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @author Sebastian Bergmann - * @copyright 2009-2010 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @link http://github.com/sebastianbergmann/php-token-stream/tree - * @since File available since Release 1.1.0 - */ - -function php_tokenstream_autoload($class = NULL) -{ - static $classes = NULL; - static $path = NULL;; - - if ($classes === NULL) { - $classes = array( - ___CLASSLIST___ - ); - - $path = dirname(dirname(dirname(__FILE__))); - } - - if ($class === NULL) { - $result = array(__FILE__); - - foreach ($classes as $file) { - $result[] = $path . $file; - } - - return $result; - } - - $cn = strtolower($class); - - if (isset($classes[$cn])) { - require $path . $classes[$cn]; - } -} - -spl_autoload_register('php_tokenstream_autoload'); diff --git a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/CachingFactory.php b/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/CachingFactory.php deleted file mode 100644 index df040e4..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/PHP/Token/Stream/CachingFactory.php +++ /dev/null @@ -1,85 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -/** - * A caching factory for token stream objects. - * - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/tree - * @since Class available since Release 1.0.0 - */ -class PHP_Token_Stream_CachingFactory -{ - /** - * @var array - */ - protected static $cache = array(); - - /** - * @param string $filename - * @return PHP_Token_Stream - */ - public static function get($filename) - { - if (!isset(self::$cache[$filename])) { - self::$cache[$filename] = new PHP_Token_Stream($filename); - } - - return self::$cache[$filename]; - } - - /** - * @param string $filename - */ - public static function clear($filename = NULL) - { - if (is_string($filename)) { - unset(self::$cache[$filename]); - } else { - self::$cache = array(); - } - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/README.markdown b/vendor/eher/phpunit/src/php-token-stream/README.markdown deleted file mode 100644 index e233f41..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/README.markdown +++ /dev/null @@ -1,23 +0,0 @@ -PHP_TokenStream -=============== - -Installation ------------- - -PHP_TokenStream should be installed using the [PEAR Installer](http://pear.php.net/). This installer is the backbone of PEAR, which provides a distribution system for PHP packages, and is shipped with every release of PHP since version 4.3.0. - -The PEAR channel (`pear.phpunit.de`) that is used to distribute PHP_TokenStream needs to be registered with the local PEAR environment: - - sb@ubuntu ~ % pear channel-discover pear.phpunit.de - Adding Channel "pear.phpunit.de" succeeded - Discovery of channel "pear.phpunit.de" succeeded - -This has to be done only once. Now the PEAR Installer can be used to install packages from the PHPUnit channel: - - sb@ubuntu tokenstream % pear install phpunit/PHP_TokenStream-beta - downloading PHP_TokenStream-0.9.1.tgz ... - Starting to download PHP_TokenStream-0.9.1.tgz (5,113 bytes) - ...done: 5,113 bytes - install ok: channel://pear.phpunit.de/PHP_TokenStream-0.9.1 - -After the installation you can find the PHP_TokenStream source files inside your local PEAR directory; the path is usually `/usr/lib/php/PHP`. diff --git a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/ClassTest.php b/vendor/eher/phpunit/src/php-token-stream/Tests/Token/ClassTest.php deleted file mode 100644 index 1adac9a..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/ClassTest.php +++ /dev/null @@ -1,122 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Laurent Laville - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.2 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once 'PHP/Token/Stream.php'; - -/** - * Tests for the PHP_Token_CLASS class. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Laurent Laville - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/ - * @since Class available since Release 1.0.2 - */ -class PHP_Token_ClassTest extends PHPUnit_Framework_TestCase -{ - protected $class; - protected $function; - - protected function setUp() - { - $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source2.php'); - - foreach ($ts as $token) { - if ($token instanceof PHP_Token_CLASS) { - $this->class = $token; - } - - if ($token instanceof PHP_Token_FUNCTION) { - $this->function = $token; - break; - } - } - } - - /** - * @covers PHP_Token_CLASS::getKeywords - */ - public function testGetClassKeywords() - { - $this->assertEquals('abstract', $this->class->getKeywords()); - } - - /** - * @covers PHP_Token_FUNCTION::getKeywords - */ - public function testGetFunctionKeywords() - { - $this->assertEquals('abstract,static', $this->function->getKeywords()); - } - - /** - * @covers PHP_Token_FUNCTION::getVisibility - */ - public function testGetFunctionVisibility() - { - $this->assertEquals('public', $this->function->getVisibility()); - } - - public function testIssue19() - { - $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue19.php'); - - foreach ($ts as $token) { - if ($token instanceof PHP_Token_CLASS) { - $this->assertFalse($token->hasInterfaces()); - } - } - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/FunctionTest.php b/vendor/eher/phpunit/src/php-token-stream/Tests/Token/FunctionTest.php deleted file mode 100644 index 1b5983a..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/FunctionTest.php +++ /dev/null @@ -1,160 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once 'PHP/Token/Stream.php'; - -/** - * Tests for the PHP_Token_FUNCTION class. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/ - * @since Class available since Release 1.0.0 - */ -class PHP_Token_FunctionTest extends PHPUnit_Framework_TestCase -{ - protected $functions; - - protected function setUp() - { - $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source.php'); - - foreach ($ts as $token) { - if ($token instanceof PHP_Token_FUNCTION) { - $this->functions[] = $token; - } - } - } - - /** - * @covers PHP_Token_FUNCTION::getArguments - */ - public function testGetArguments() - { - $this->assertEquals(array(), $this->functions[0]->getArguments()); - - $this->assertEquals( - array('$baz' => 'Baz'), $this->functions[1]->getArguments() - ); - - $this->assertEquals( - array('$foobar' => 'Foobar'), $this->functions[2]->getArguments() - ); - - $this->assertEquals( - array('$barfoo' => 'Barfoo'), $this->functions[3]->getArguments() - ); - - $this->assertEquals(array(), $this->functions[4]->getArguments()); - } - - /** - * @covers PHP_Token_FUNCTION::getName - */ - public function testGetName() - { - $this->assertEquals('foo', $this->functions[0]->getName()); - $this->assertEquals('bar', $this->functions[1]->getName()); - $this->assertEquals('foobar', $this->functions[2]->getName()); - $this->assertEquals('barfoo', $this->functions[3]->getName()); - $this->assertEquals('baz', $this->functions[4]->getName()); - } - - /** - * @covers PHP_Token::getLine - */ - public function testGetLine() - { - $this->assertEquals(5, $this->functions[0]->getLine()); - $this->assertEquals(10, $this->functions[1]->getLine()); - $this->assertEquals(17, $this->functions[2]->getLine()); - $this->assertEquals(21, $this->functions[3]->getLine()); - $this->assertEquals(29, $this->functions[4]->getLine()); - } - - /** - * @covers PHP_TokenWithScope::getEndLine - */ - public function testGetEndLine() - { - $this->assertEquals(5, $this->functions[0]->getEndLine()); - $this->assertEquals(12, $this->functions[1]->getEndLine()); - $this->assertEquals(19, $this->functions[2]->getEndLine()); - $this->assertEquals(23, $this->functions[3]->getEndLine()); - $this->assertEquals(31, $this->functions[4]->getEndLine()); - } - - /** - * @covers PHP_Token_FUNCTION::getDocblock - */ - public function testGetDocblock() - { - $this->assertNull($this->functions[0]->getDocblock()); - - $this->assertEquals( - "/**\n * @param Baz \$baz\n */", - $this->functions[1]->getDocblock() - ); - - $this->assertEquals( - "/**\n * @param Foobar \$foobar\n */", - $this->functions[2]->getDocblock() - ); - - $this->assertNull($this->functions[3]->getDocblock()); - $this->assertNull($this->functions[4]->getDocblock()); - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/IncludeTest.php b/vendor/eher/phpunit/src/php-token-stream/Tests/Token/IncludeTest.php deleted file mode 100644 index c909d2d..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/IncludeTest.php +++ /dev/null @@ -1,117 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Laurent Laville - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.2 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once 'PHP/Token/Stream.php'; - -/** - * Tests for the PHP_Token_REQUIRE_ONCE, PHP_Token_REQUIRE - * PHP_Token_INCLUDE_ONCE and PHP_Token_INCLUDE_ONCE classes. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Laurent Laville - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/ - * @since Class available since Release 1.0.2 - */ -class PHP_Token_IncludeTest extends PHPUnit_Framework_TestCase -{ - protected $ts; - - protected function setUp() - { - $this->ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source3.php'); - } - - /** - * @covers PHP_Token_Includes::getName - * @covers PHP_Token_Includes::getType - */ - public function testGetIncludes() - { - $this->assertSame( - array('test4.php', 'test3.php', 'test2.php', 'test1.php'), - $this->ts->getIncludes() - ); - } - - /** - * @covers PHP_Token_Includes::getName - * @covers PHP_Token_Includes::getType - */ - public function testGetIncludesCategorized() - { - $this->assertSame( - array( - 'require_once' => array('test4.php'), - 'require' => array('test3.php'), - 'include_once' => array('test2.php'), - 'include' => array('test1.php') - ), - $this->ts->getIncludes(TRUE) - ); - } - - /** - * @covers PHP_Token_Includes::getName - * @covers PHP_Token_Includes::getType - */ - public function testGetIncludesCategory() - { - $this->assertSame( - array('test4.php'), - $this->ts->getIncludes(TRUE, 'require_once') - ); - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/InterfaceTest.php b/vendor/eher/phpunit/src/php-token-stream/Tests/Token/InterfaceTest.php deleted file mode 100644 index c78d57a..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/InterfaceTest.php +++ /dev/null @@ -1,236 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @author Laurent Laville - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once 'PHP/Token/Stream.php'; - -/** - * Tests for the PHP_Token_INTERFACE class. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @author Laurent Laville - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/ - * @since Class available since Release 1.0.0 - */ -class PHP_Token_InterfaceTest extends PHPUnit_Framework_TestCase -{ - protected $class; - protected $interfaces; - - protected function setUp() - { - $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source4.php'); - $i = 0; - foreach ($ts as $token) { - if ($token instanceof PHP_Token_CLASS) { - $this->class = $token; - } - elseif ($token instanceof PHP_Token_INTERFACE) { - $this->interfaces[$i] = $token; - $i++; - } - } - } - - /** - * @covers PHP_Token_INTERFACE::getName - */ - public function testGetName() - { - $this->assertEquals( - 'iTemplate', $this->interfaces[0]->getName() - ); - } - - /** - * @covers PHP_Token_INTERFACE::getParent - */ - public function testGetParentNotExists() - { - $this->assertFalse( - $this->interfaces[0]->getParent() - ); - } - - /** - * @covers PHP_Token_INTERFACE::hasParent - */ - public function testHasParentNotExists() - { - $this->assertFalse( - $this->interfaces[0]->hasParent() - ); - } - - /** - * @covers PHP_Token_INTERFACE::getParent - */ - public function testGetParentExists() - { - $this->assertEquals( - 'a', $this->interfaces[2]->getParent() - ); - } - - /** - * @covers PHP_Token_INTERFACE::hasParent - */ - public function testHasParentExists() - { - $this->assertTrue( - $this->interfaces[2]->hasParent() - ); - } - - /** - * @covers PHP_Token_INTERFACE::getInterfaces - */ - public function testGetInterfacesExists() - { - $this->assertEquals( - array('b'), - $this->class->getInterfaces() - ); - } - - /** - * @covers PHP_Token_INTERFACE::hasInterfaces - */ - public function testHasInterfacesExists() - { - $this->assertTrue( - $this->class->hasInterfaces() - ); - } - /** - * @covers PHP_Token_INTERFACE::getPackage - */ - public function testGetPackageNamespace() { - $tokenStream = new PHP_Token_Stream(TEST_FILES_PATH . 'classInNamespace.php'); - foreach($tokenStream as $token) { - if($token instanceOf PHP_Token_INTERFACE) { - $package = $token->getPackage(); - $this->assertSame('Foo\\Bar', $package['namespace']); - } - } - } - - - public function provideFilesWithClassesWithinMultipleNamespaces() { - return array( - array(TEST_FILES_PATH . 'multipleNamespacesWithOneClassUsingBraces.php'), - array(TEST_FILES_PATH . 'multipleNamespacesWithOneClassUsingNonBraceSyntax.php'), - ); - } - - /** - * @dataProvider provideFilesWithClassesWithinMultipleNamespaces - * @covers PHP_Token_INTERFACE::getPackage - */ - public function testGetPackageNamespaceForFileWithMultipleNamespaces($filepath) { - $tokenStream = new PHP_Token_Stream($filepath); - $firstClassFound = false; - foreach($tokenStream as $token) { - if($firstClassFound === false && $token instanceOf PHP_Token_INTERFACE) { - $package = $token->getPackage(); - $this->assertSame('TestClassInBar', $token->getName()); - $this->assertSame('Foo\\Bar', $package['namespace']); - $firstClassFound = true; - continue; - } - // Secound class - if($token instanceOf PHP_Token_INTERFACE) { - $package = $token->getPackage(); - $this->assertSame('TestClassInBaz', $token->getName()); - $this->assertSame('Foo\\Baz', $package['namespace']); - return; - } - } - $this->fail("Seachring for 2 classes failed"); - } - - public function testGetPackageNamespaceIsEmptyForInterfacesThatAreNotWithinNamespaces() { - foreach($this->interfaces as $token) { - $package = $token->getPackage(); - $this->assertSame("", $package['namespace']); - } - } - - /** - * @covers PHP_Token_INTERFACE::getPackage - */ - public function testGetPackageNamespaceWhenExtentingFromNamespaceClass() { - $tokenStream = new PHP_Token_Stream(TEST_FILES_PATH . 'classExtendsNamespacedClass.php'); - $firstClassFound = false; - foreach($tokenStream as $token) { - if($firstClassFound === false && $token instanceOf PHP_Token_INTERFACE) { - $package = $token->getPackage(); - $this->assertSame('Baz', $token->getName()); - $this->assertSame('Foo\\Bar', $package['namespace']); - $firstClassFound = true; - continue; - } - if($token instanceOf PHP_Token_INTERFACE) { - $package = $token->getPackage(); - $this->assertSame('Extender', $token->getName()); - $this->assertSame('Other\\Space', $package['namespace']); - return; - } - } - $this->fail("Searching for 2 classes failed"); - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/NamespaceTest.php b/vendor/eher/phpunit/src/php-token-stream/Tests/Token/NamespaceTest.php deleted file mode 100644 index 2205925..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/Tests/Token/NamespaceTest.php +++ /dev/null @@ -1,124 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . - '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once 'PHP/Token/Stream.php'; - -/** - * Tests for the PHP_Token_NAMESPACE class. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/ - * @since Class available since Release 1.0.0 - */ -class PHP_Token_NamespaceTest extends PHPUnit_Framework_TestCase -{ - /** - * @covers PHP_Token_NAMESPACE::getName - */ - public function testGetName() - { - $tokenStream = new PHP_Token_Stream( - TEST_FILES_PATH . 'classInNamespace.php' - ); - - foreach ($tokenStream as $token) { - if ($token instanceof PHP_Token_NAMESPACE) { - $this->assertSame('Foo\\Bar', $token->getName()); - } - } - } - - public function testGetStartLineWithUnscopedNamespace() - { - $tokenStream = new PHP_Token_Stream(TEST_FILES_PATH . 'classInNamespace.php'); - foreach($tokenStream as $token) { - if($token instanceOf PHP_Token_NAMESPACE) { - $this->assertSame(2, $token->getLine()); - } - } - } - - public function testGetEndLineWithUnscopedNamespace() - { - $tokenStream = new PHP_Token_Stream(TEST_FILES_PATH . 'classInNamespace.php'); - foreach($tokenStream as $token) { - if($token instanceOf PHP_Token_NAMESPACE) { - $this->assertSame(2, $token->getEndLine()); - } - } - } - public function testGetStartLineWithScopedNamespace() - { - $tokenStream = new PHP_Token_Stream(TEST_FILES_PATH . 'classInScopedNamespace.php'); - foreach($tokenStream as $token) { - if($token instanceOf PHP_Token_NAMESPACE) { - $this->assertSame(2, $token->getLine()); - } - } - } - - public function testGetEndLineWithScopedNamespace() - { - $tokenStream = new PHP_Token_Stream(TEST_FILES_PATH . 'classInScopedNamespace.php'); - foreach($tokenStream as $token) { - if($token instanceOf PHP_Token_NAMESPACE) { - $this->assertSame(8, $token->getEndLine()); - } - } - } - -} diff --git a/vendor/eher/phpunit/src/php-token-stream/Tests/TokenTest.php b/vendor/eher/phpunit/src/php-token-stream/Tests/TokenTest.php deleted file mode 100644 index 760c9db..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/Tests/TokenTest.php +++ /dev/null @@ -1,85 +0,0 @@ -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @since File available since Release 1.0.0 - */ - -if (!defined('TEST_FILES_PATH')) { - define( - 'TEST_FILES_PATH', - dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR - ); -} - -require_once 'PHP/Token/Stream.php'; - -/** - * Tests for the PHP_Token class. - * - * @package PHP_TokenStream - * @subpackage Tests - * @author Sebastian Bergmann - * @copyright 2009-2012 Sebastian Bergmann - * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License - * @version Release: 1.1.3 - * @link http://github.com/sebastianbergmann/php-token-stream/ - * @since Class available since Release 1.0.0 - */ -class PHP_TokenTest extends PHPUnit_Framework_TestCase -{ - /** - * @covers PHP_Token::__construct - * @covers PHP_Token::__toString - */ - public function testToString() - { - $this->markTestIncomplete(); - } - - /** - * @covers PHP_Token::__construct - * @covers PHP_Token::getLine - */ - public function testGetLine() - { - $this->markTestIncomplete(); - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/Tests/_files/classExtendsNamespacedClass.php b/vendor/eher/phpunit/src/php-token-stream/Tests/_files/classExtendsNamespacedClass.php deleted file mode 100644 index 560eec9..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/Tests/_files/classExtendsNamespacedClass.php +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-token-stream/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php b/vendor/eher/phpunit/src/php-token-stream/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php deleted file mode 100644 index bf9d520..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php +++ /dev/null @@ -1,22 +0,0 @@ -getTokens(); - - if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE || - $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) { - - $phpcsFile->addError( - 'Concatenation operator must be surrounded by whitespace', - $stackPtr - ); - } - } -} diff --git a/vendor/eher/phpunit/src/php-token-stream/build/PHPCS/ruleset.xml b/vendor/eher/phpunit/src/php-token-stream/build/PHPCS/ruleset.xml deleted file mode 100644 index 402f214..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/build/PHPCS/ruleset.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - Sebastian Bergmann's coding standard - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-token-stream/build/phpmd.xml b/vendor/eher/phpunit/src/php-token-stream/build/phpmd.xml deleted file mode 100644 index 23ecb8b..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/build/phpmd.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - Sebastian Bergmann's ruleset - - - - - - - - - - - - - - - - - - - diff --git a/vendor/eher/phpunit/src/php-token-stream/package.xml b/vendor/eher/phpunit/src/php-token-stream/package.xml deleted file mode 100644 index 1564bbe..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/package.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - PHP_TokenStream - pear.phpunit.de - Wrapper around PHP's tokenizer extension. - Wrapper around PHP's tokenizer extension. - - Sebastian Bergmann - sb - sb@sebastian-bergmann.de - yes - - 2012-02-15 - - 1.1.3 - 1.1.0 - - - stable - stable - - The BSD 3-Clause License - http://github.com/sebastianbergmann/php-token-stream/tree - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.2.7 - - - 1.9.4 - - - tokenizer - - - - - diff --git a/vendor/eher/phpunit/src/php-token-stream/phpunit.xml.dist b/vendor/eher/phpunit/src/php-token-stream/phpunit.xml.dist deleted file mode 100644 index 6d307c4..0000000 --- a/vendor/eher/phpunit/src/php-token-stream/phpunit.xml.dist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Tests - - - - - - - - - - - - PHP - - - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/base.php b/vendor/eher/phpunit/src/php/ezc/Base/base.php deleted file mode 100644 index e1e3c4a..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/base.php +++ /dev/null @@ -1,658 +0,0 @@ -array) - */ - protected static $repositoryDirs = array(); - - /** - * This variable stores all the elements from the autoload arrays. When a - * new autoload file is loaded, their files are added to this array. - * - * @var array(string=>string) - */ - protected static $autoloadArray = array(); - - /** - * This variable stores all the elements from the autoload arrays for - * external repositories. When a new autoload file is loaded, their files - * are added to this array. - * - * @var array(string=>string) - */ - protected static $externalAutoloadArray = array(); - - /** - * Options for the ezcBase class. - * - * @var ezcBaseOptions - */ - static private $options; - - /** - * Associates an option object with this static class. - * - * @param ezcBaseAutoloadOptions $options - */ - static public function setOptions( ezcBaseAutoloadOptions $options ) - { - self::$options = $options; - } - - /** - * Tries to autoload the given className. If the className could be found - * this method returns true, otherwise false. - * - * This class caches the requested class names (including the ones who - * failed to load). - * - * @param string $className The name of the class that should be loaded. - * - * @return bool - */ - public static function autoload( $className ) - { - ezcBase::setPackageDir(); - - // Check whether the classname is already in the cached autoloadArray. - if ( array_key_exists( $className, ezcBase::$autoloadArray ) ) - { - // Is it registered as 'unloadable'? - if ( ezcBase::$autoloadArray[$className] == false ) - { - return false; - } - ezcBase::loadFile( ezcBase::$autoloadArray[$className] ); - - return true; - } - - // Check whether the classname is already in the cached autoloadArray - // for external repositories. - if ( array_key_exists( $className, ezcBase::$externalAutoloadArray ) ) - { - // Is it registered as 'unloadable'? - if ( ezcBase::$externalAutoloadArray[$className] == false ) - { - return false; - } - ezcBase::loadExternalFile( ezcBase::$externalAutoloadArray[$className] ); - - return true; - } - - // Not cached, so load the autoload from the package. - // Matches the first and optionally the second 'word' from the classname. - $fileNames = array(); - if ( preg_match( "/^([a-z0-9]*)([A-Z][a-z0-9]*)?([A-Z][a-z0-9]*)?/", $className, $matches ) !== false ) - { - $autoloadFile = ""; - // Try to match with both names, if available. - switch ( sizeof( $matches ) ) - { - case 4: - // check for x_y_autoload.php - $autoloadFile = strtolower( "{$matches[2]}_{$matches[3]}_autoload.php" ); - $fileNames[] = $autoloadFile; - if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) ) - { - return true; - } - // break intentionally missing. - - case 3: - // check for x_autoload.php - $autoloadFile = strtolower( "{$matches[2]}_autoload.php" ); - $fileNames[] = $autoloadFile; - if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) ) - { - return true; - } - // break intentionally missing. - - case 2: - // check for autoload.php - $autoloadFile = 'autoload.php'; - $fileNames[] = $autoloadFile; - if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) ) - { - return true; - } - break; - } - - // Maybe there is another autoload available. - // Register this classname as false. - ezcBase::$autoloadArray[$className] = false; - } - - $path = ezcBase::$packageDir . 'autoload/'; - $realPath = realpath( $path ); - - if ( $realPath == '' ) - { - // Can not be tested, because if this happens, then the autoload - // environment has not been set-up correctly. - trigger_error( "Couldn't find autoload directory '$path'", E_USER_ERROR ); - } - - $dirs = self::getRepositoryDirectories(); - if ( ezcBase::$options && ezcBase::$options->debug ) - { - throw new ezcBaseAutoloadException( $className, $fileNames, $dirs ); - } - - return false; - } - - /** - * Sets the current working directory to $directory. - * - * @param string $directory - */ - public static function setWorkingDirectory( $directory ) - { - self::$libraryMode = 'pear'; - self::$currentWorkingDirectory = $directory; - } - - /** - * Figures out the base path of the eZ Components installation. - * - * It stores the path that it finds in a static member variable. The path - * depends on the installation method of the eZ Components. The SVN version - * has a different path than the PEAR installed version. - */ - protected static function setPackageDir() - { - if ( ezcBase::$packageDir !== null ) - { - return; - } - - // Get the path to the components. - $baseDir = dirname( __FILE__ ); - - switch ( ezcBase::$libraryMode ) - { - case "custom": - ezcBase::$packageDir = self::$currentWorkingDirectory . '/'; - break; - case "devel": - case "tarball": - ezcBase::$packageDir = $baseDir. "/../../"; - break; - case "pear"; - ezcBase::$packageDir = $baseDir. "/../"; - break; - } - } - - /** - * Tries to load the autoload array and, if loaded correctly, includes the class. - * - * @param string $fileName Name of the autoload file. - * @param string $className Name of the class that should be autoloaded. - * @param string $prefix The prefix of the class repository. - * - * @return bool True is returned when the file is correctly loaded. - * Otherwise false is returned. - */ - protected static function requireFile( $fileName, $className, $prefix ) - { - $autoloadDir = ezcBase::$packageDir . "autoload/"; - - // We need the full path to the fileName. The method file_exists() doesn't - // automatically check the (php.ini) library paths. Therefore: - // file_exists( "ezc/autoload/$fileName" ) doesn't work. - if ( $prefix === 'ezc' && file_exists( "$autoloadDir$fileName" ) ) - { - $array = require( "$autoloadDir$fileName" ); - - if ( is_array( $array) && array_key_exists( $className, $array ) ) - { - // Add the array to the cache, and include the requested file. - ezcBase::$autoloadArray = array_merge( ezcBase::$autoloadArray, $array ); - if ( ezcBase::$options !== null && ezcBase::$options->preload && !preg_match( '/Exception$/', $className ) ) - { - foreach ( $array as $loadClassName => $file ) - { - if ( $loadClassName !== 'ezcBase' && !class_exists( $loadClassName, false ) && !interface_exists( $loadClassName, false ) && !preg_match( '/Exception$/', $loadClassName ) /*&& !class_exists( $loadClassName, false ) && !interface_exists( $loadClassName, false )*/ ) - { - ezcBase::loadFile( ezcBase::$autoloadArray[$loadClassName] ); - } - } - } - else - { - ezcBase::loadFile( ezcBase::$autoloadArray[$className] ); - } - return true; - } - } - - // It is not in components autoload/ dir. - // try to search in additional dirs. - foreach ( ezcBase::$repositoryDirs as $repositoryPrefix => $extraDir ) - { - if ( gettype( $repositoryPrefix ) === 'string' && $repositoryPrefix !== $prefix ) - { - continue; - } - - if ( file_exists( $extraDir['autoloadDirPath'] . '/' . $fileName ) ) - { - $array = array(); - $originalArray = require( $extraDir['autoloadDirPath'] . '/' . $fileName ); - - // Building paths. - // Resulting path to class definition file consists of: - // path to extra directory with autoload file + - // basePath provided for current extra directory + - // path to class definition file stored in autoload file. - foreach ( $originalArray as $class => $classPath ) - { - $array[$class] = $extraDir['basePath'] . '/' . $classPath; - } - - if ( is_array( $array ) && array_key_exists( $className, $array ) ) - { - // Add the array to the cache, and include the requested file. - ezcBase::$externalAutoloadArray = array_merge( ezcBase::$externalAutoloadArray, $array ); - ezcBase::loadExternalFile( ezcBase::$externalAutoloadArray[$className] ); - return true; - } - } - } - - // Nothing found :-(. - return false; - } - - /** - * Loads, require(), the given file name. If we are in development mode, - * "/src/" is inserted into the path. - * - * @param string $file The name of the file that should be loaded. - */ - protected static function loadFile( $file ) - { - switch ( ezcBase::$libraryMode ) - { - case "devel": - case "tarball": - list( $first, $second ) = explode( '/', $file, 2 ); - $file = $first . "/src/" . $second; - break; - - case "custom": - list( $first, $second ) = explode( '/', $file, 2 ); - // Add the "src/" after the package name. - if ( $first == 'Base' || $first == 'UnitTest' ) - { - list( $first, $second ) = explode( '/', $file, 2 ); - $file = $first . "/src/" . $second; - } - else - { - list( $first, $second, $third ) = explode( '/', $file, 3 ); - $file = $first . '/' . $second . "/src/" . $third; - } - break; - - case "pear": - /* do nothing, it's already correct */ - break; - } - - if ( file_exists( ezcBase::$packageDir . $file ) ) - { - require( ezcBase::$packageDir . $file ); - } - else - { - // Can not be tested, because if this happens, then one of the - // components has a broken autoload file. - throw new ezcBaseFileNotFoundException( ezcBase::$packageDir.$file ); - } - } - - /** - * Loads, require(), the given file name from an external package. - * - * @param string $file The name of the file that should be loaded. - */ - protected static function loadExternalFile( $file ) - { - if ( file_exists( $file ) ) - { - require( $file ); - } - else - { - throw new ezcBaseFileNotFoundException( $file ); - } - } - - /** - * Checks for dependencies on PHP versions or extensions - * - * The function as called by the $component component checks for the $type - * dependency. The dependency $type is compared against the $value. The - * function aborts the script if the dependency is not matched. - * - * @param string $component - * @param int $type - * @param mixed $value - */ - public static function checkDependency( $component, $type, $value ) - { - switch ( $type ) - { - case self::DEP_PHP_EXTENSION: - if ( extension_loaded( $value ) ) - { - return; - } - else - { - // Can not be tested as it would abort the PHP script. - die( "\nThe {$component} component depends on the default PHP extension '{$value}', which is not loaded.\n" ); - } - break; - - case self::DEP_PHP_VERSION: - $phpVersion = phpversion(); - if ( version_compare( $phpVersion, $value, '>=' ) ) - { - return; - } - else - { - // Can not be tested as it would abort the PHP script. - die( "\nThe {$component} component depends on the PHP version '{$value}', but the current version is '{$phpVersion}'.\n" ); - } - break; - } - } - - /** - * Return the list of directories that contain class repositories. - * - * The path to the eZ components directory is always included in the result - * array. Each element in the returned array has the format of: - * packageDirectory => ezcBaseRepositoryDirectory - * - * @return array(string=>ezcBaseRepositoryDirectory) - */ - public static function getRepositoryDirectories() - { - $autoloadDirs = array(); - ezcBase::setPackageDir(); - $repositoryDir = self::$currentWorkingDirectory ? self::$currentWorkingDirectory : ( realpath( dirname( __FILE__ ) . '/../../' ) ); - $autoloadDirs['ezc'] = new ezcBaseRepositoryDirectory( ezcBaseRepositoryDirectory::TYPE_INTERNAL, $repositoryDir, $repositoryDir . "/autoload" ); - - foreach ( ezcBase::$repositoryDirs as $extraDirKey => $extraDirArray ) - { - $repositoryDirectory = new ezcBaseRepositoryDirectory( ezcBaseRepositoryDirectory::TYPE_EXTERNAL, realpath( $extraDirArray['basePath'] ), realpath( $extraDirArray['autoloadDirPath'] ) ); - $autoloadDirs[$extraDirKey] = $repositoryDirectory; - } - - return $autoloadDirs; - } - - /** - * Adds an additional class repository. - * - * Used for adding class repositoryies outside the eZ components to be - * loaded by the autoload system. - * - * This function takes two arguments: $basePath is the base path for the - * whole class repository and $autoloadDirPath the path where autoload - * files for this repository are found. The paths in the autoload files are - * relative to the package directory as specified by the $basePath - * argument. I.e. class definition file will be searched at location - * $basePath + path to the class definition file as stored in the autoload - * file. - * - * addClassRepository() should be called somewhere in code before external classes - * are used. - * - * Example: - * Take the following facts: - *
      - *
    • there is a class repository stored in the directory "./repos"
    • - *
    • autoload files for that repository are stored in "./repos/autoloads"
    • - *
    • there are two components in this repository: "Me" and "You"
    • - *
    • the "Me" component has the classes "erMyClass1" and "erMyClass2"
    • - *
    • the "You" component has the classes "erYourClass1" and "erYourClass2"
    • - *
    - * - * In this case you would need to create the following files in - * "./repos/autoloads". Please note that the part before _autoload.php in - * the filename is the first part of the classname, not considering - * the all lower-case letter prefix. - * - * "my_autoload.php": - * - * 'Me/myclass1.php', - * 'erMyClass2' => 'Me/myclass2.php', - * ); - * ?> - * - * - * "your_autoload.php": - * - * 'You/yourclass1.php', - * 'erYourClass2' => 'You/yourclass2.php', - * ); - * ?> - * - * - * The directory structure for the external repository is then: - * - * ./repos/autoloads/my_autoload.php - * ./repos/autoloads/you_autoload.php - * ./repos/Me/myclass1.php - * ./repos/Me/myclass2.php - * ./repos/You/yourclass1.php - * ./repos/You/yourclass2.php - * - * - * To use this repository with the autoload mechanism you have to use the - * following code: - * - * - * - * - * @throws ezcBaseFileNotFoundException if $autoloadDirPath or $basePath do not exist. - * @param string $basePath - * @param string $autoloadDirPath - * @param string $prefix - */ - public static function addClassRepository( $basePath, $autoloadDirPath = null, $prefix = null ) - { - // check if base path exists - if ( !is_dir( $basePath ) ) - { - throw new ezcBaseFileNotFoundException( $basePath, 'base directory' ); - } - - // calculate autoload path if it wasn't given - if ( is_null( $autoloadDirPath ) ) - { - $autoloadDirPath = $basePath . '/autoload'; - } - - // check if autoload dir exists - if ( !is_dir( $autoloadDirPath ) ) - { - throw new ezcBaseFileNotFoundException( $autoloadDirPath, 'autoload directory' ); - } - - // add info to $repositoryDirs - if ( $prefix === null ) - { - $array = array( 'basePath' => $basePath, 'autoloadDirPath' => $autoloadDirPath ); - - // add info to the list of extra dirs - ezcBase::$repositoryDirs[] = $array; - } - else - { - if ( array_key_exists( $prefix, ezcBase::$repositoryDirs ) ) - { - throw new ezcBaseDoubleClassRepositoryPrefixException( $prefix, $basePath, $autoloadDirPath ); - } - - // add info to the list of extra dirs, and use the prefix to identify the new repository. - ezcBase::$repositoryDirs[$prefix] = array( 'basePath' => $basePath, 'autoloadDirPath' => $autoloadDirPath ); - } - } - - /** - * Returns the base path of the eZ Components installation - * - * This method returns the base path, including a trailing directory - * separator. - * - * @return string - */ - public static function getInstallationPath() - { - self::setPackageDir(); - - $path = realpath( self::$packageDir ); - if ( substr( $path, -1 ) !== DIRECTORY_SEPARATOR ) - { - $path .= DIRECTORY_SEPARATOR; - } - return $path; - } - - /** - * Sets the development mode to the one specified. - * - * @param int $runMode - */ - public static function setRunMode( $runMode ) - { - if ( !in_array( $runMode, array( ezcBase::MODE_PRODUCTION, ezcBase::MODE_DEVELOPMENT ) ) ) - { - throw new ezcBaseValueException( 'runMode', $runMode, 'ezcBase::MODE_PRODUCTION or ezcBase::MODE_DEVELOPMENT' ); - } - - self::$runMode = $runMode; - } - - /** - * Returns the current development mode. - * - * @return int - */ - public static function getRunMode() - { - return self::$runMode; - } - - /** - * Returns true when we are in development mode. - * - * @return bool - */ - public static function inDevMode() - { - return self::$runMode == ezcBase::MODE_DEVELOPMENT; - } - - /** - * Returns the installation method - * - * Possible return values are 'custom', 'devel', 'tarball' and 'pear'. Only - * 'tarball' and 'pear' are returned for user-installed versions. - * - * @return string - */ - public static function getInstallMethod() - { - return self::$libraryMode; - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/base_autoload.php b/vendor/eher/phpunit/src/php/ezc/Base/base_autoload.php deleted file mode 100644 index 2235992..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/base_autoload.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Base/exceptions/exception.php', - 'ezcBaseFileException' => 'Base/exceptions/file_exception.php', - 'ezcBaseAutoloadException' => 'Base/exceptions/autoload.php', - 'ezcBaseDoubleClassRepositoryPrefixException' => 'Base/exceptions/double_class_repository_prefix.php', - 'ezcBaseExtensionNotFoundException' => 'Base/exceptions/extension_not_found.php', - 'ezcBaseFileIoException' => 'Base/exceptions/file_io.php', - 'ezcBaseFileNotFoundException' => 'Base/exceptions/file_not_found.php', - 'ezcBaseFilePermissionException' => 'Base/exceptions/file_permission.php', - 'ezcBaseFunctionalityNotSupportedException' => 'Base/exceptions/functionality_not_supported.php', - 'ezcBaseInitCallbackConfiguredException' => 'Base/exceptions/init_callback_configured.php', - 'ezcBaseInitInvalidCallbackClassException' => 'Base/exceptions/invalid_callback_class.php', - 'ezcBaseInvalidParentClassException' => 'Base/exceptions/invalid_parent_class.php', - 'ezcBasePropertyNotFoundException' => 'Base/exceptions/property_not_found.php', - 'ezcBasePropertyPermissionException' => 'Base/exceptions/property_permission.php', - 'ezcBaseSettingNotFoundException' => 'Base/exceptions/setting_not_found.php', - 'ezcBaseSettingValueException' => 'Base/exceptions/setting_value.php', - 'ezcBaseValueException' => 'Base/exceptions/value.php', - 'ezcBaseWhateverException' => 'Base/exceptions/whatever.php', - 'ezcBaseOptions' => 'Base/options.php', - 'ezcBaseStruct' => 'Base/struct.php', - 'ezcBase' => 'Base/base.php', - 'ezcBaseAutoloadOptions' => 'Base/options/autoload.php', - 'ezcBaseConfigurationInitializer' => 'Base/interfaces/configuration_initializer.php', - 'ezcBaseExportable' => 'Base/interfaces/exportable.php', - 'ezcBaseFeatures' => 'Base/features.php', - 'ezcBaseFile' => 'Base/file.php', - 'ezcBaseFileFindContext' => 'Base/structs/file_find_context.php', - 'ezcBaseInit' => 'Base/init.php', - 'ezcBaseMetaData' => 'Base/metadata.php', - 'ezcBaseMetaDataPearReader' => 'Base/metadata/pear.php', - 'ezcBaseMetaDataTarballReader' => 'Base/metadata/tarball.php', - 'ezcBasePersistable' => 'Base/interfaces/persistable.php', - 'ezcBaseRepositoryDirectory' => 'Base/structs/repository_directory.php', -); -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/autoload.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/autoload.php deleted file mode 100644 index d3237cc..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/autoload.php +++ /dev/null @@ -1,38 +0,0 @@ -autoloadPath ); - } - parent::__construct( "Could not find a class to file mapping for '{$className}'. Searched for ". implode( ', ', $files ) . " in: " . implode( ', ', $paths ) ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/double_class_repository_prefix.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/double_class_repository_prefix.php deleted file mode 100644 index 38073d9..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/double_class_repository_prefix.php +++ /dev/null @@ -1,34 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/exception.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/exception.php deleted file mode 100644 index d1b59f9..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/exception.php +++ /dev/null @@ -1,43 +0,0 @@ -originalMessage = $message; - - if ( php_sapi_name() == 'cli' ) - { - parent::__construct( $message ); - } - else - { - parent::__construct( htmlspecialchars( $message ) ); - } - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/extension_not_found.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/extension_not_found.php deleted file mode 100644 index b58f888..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/extension_not_found.php +++ /dev/null @@ -1,38 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_exception.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_exception.php deleted file mode 100644 index d14b650..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_exception.php +++ /dev/null @@ -1,25 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_io.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_io.php deleted file mode 100644 index 6d02f97..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_io.php +++ /dev/null @@ -1,50 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_not_found.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_not_found.php deleted file mode 100644 index dec3e0d..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_not_found.php +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_permission.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_permission.php deleted file mode 100644 index af569b5..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/file_permission.php +++ /dev/null @@ -1,63 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/functionality_not_supported.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/functionality_not_supported.php deleted file mode 100644 index 21f7695..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/functionality_not_supported.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/init_callback_configured.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/init_callback_configured.php deleted file mode 100644 index dde8e74..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/init_callback_configured.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_callback_class.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_callback_class.php deleted file mode 100644 index f567664..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_callback_class.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_parent_class.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_parent_class.php deleted file mode 100644 index 76e9f10..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/invalid_parent_class.php +++ /dev/null @@ -1,29 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_not_found.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_not_found.php deleted file mode 100644 index 45caadc..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_not_found.php +++ /dev/null @@ -1,30 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_permission.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_permission.php deleted file mode 100644 index f0614fd..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/property_permission.php +++ /dev/null @@ -1,42 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_not_found.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_not_found.php deleted file mode 100644 index 04e7ff7..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_not_found.php +++ /dev/null @@ -1,29 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_value.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_value.php deleted file mode 100644 index c423a03..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/setting_value.php +++ /dev/null @@ -1,42 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/value.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/value.php deleted file mode 100644 index c7608e9..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/value.php +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/whatever.php b/vendor/eher/phpunit/src/php/ezc/Base/exceptions/whatever.php deleted file mode 100644 index 623006d..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/exceptions/whatever.php +++ /dev/null @@ -1,40 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/ezc_bootstrap.php b/vendor/eher/phpunit/src/php/ezc/Base/ezc_bootstrap.php deleted file mode 100644 index 6da0d6e..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/ezc_bootstrap.php +++ /dev/null @@ -1,40 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/features.php b/vendor/eher/phpunit/src/php/ezc/Base/features.php deleted file mode 100644 index 335f32c..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/features.php +++ /dev/null @@ -1,365 +0,0 @@ - - * - * - * - * @package Base - * @version //autogentag// - */ -class ezcBaseFeatures -{ - /** - * Used to store the path of the ImageMagick convert utility. - * - * It is initialized in the {@link getImageConvertExecutable()} function. - * - * @var string - */ - private static $imageConvert = null; - - /** - * Used to store the path of the ImageMagick identify utility. - * - * It is initialized in the {@link getImageIdentifyExecutable()} function. - * - * @var string - */ - private static $imageIdentify = null; - - /** - * Used to store the operating system. - * - * It is initialized in the {@link os()} function. - * - * @var string - */ - private static $os = null; - - /** - * Determines if hardlinks are supported. - * - * @return bool - */ - public static function supportsLink() - { - return function_exists( 'link' ); - } - - /** - * Determines if symlinks are supported. - * - * @return bool - */ - public static function supportsSymLink() - { - return function_exists( 'symlink' ); - } - - /** - * Determines if posix uids are supported. - * - * @return bool - */ - public static function supportsUserId() - { - return function_exists( 'posix_getpwuid' ); - } - - /** - * Determines if the ImageMagick convert utility is installed. - * - * @return bool - */ - public static function hasImageConvert() - { - return !is_null( self::getImageConvertExecutable() ); - } - - /** - * Returns the path to the ImageMagick convert utility. - * - * On Linux, Unix,... it will return something like: /usr/bin/convert - * On Windows it will return something like: C:\Windows\System32\convert.exe - * - * @return string - */ - public static function getImageConvertExecutable() - { - if ( !is_null( self::$imageConvert ) ) - { - return self::$imageConvert; - } - return ( self::$imageConvert = self::findExecutableInPath( 'convert' ) ); - } - - /** - * Determines if the ImageMagick identify utility is installed. - * - * @return bool - */ - public static function hasImageIdentify() - { - return !is_null( self::getImageIdentifyExecutable() ); - } - - /** - * Returns the path to the ImageMagick identify utility. - * - * On Linux, Unix,... it will return something like: /usr/bin/identify - * On Windows it will return something like: C:\Windows\System32\identify.exe - * - * @return string - */ - public static function getImageIdentifyExecutable() - { - if ( !is_null( self::$imageIdentify ) ) - { - return self::$imageIdentify; - } - return ( self::$imageIdentify = self::findExecutableInPath( 'identify' ) ); - } - - /** - * Determines if the specified extension is loaded. - * - * If $version is specified, the specified extension will be tested also - * against the version of the loaded extension. - * - * Examples: - * - * hasExtensionSupport( 'gzip' ); - * - * will return true if gzip extension is loaded. - * - * - * hasExtensionSupport( 'pdo_mysql', '1.0.2' ); - * - * will return true if pdo_mysql extension is loaded and its version is at least 1.0.2. - * - * @param string $extension - * @param string $version - * @return bool - */ - public static function hasExtensionSupport( $extension, $version = null ) - { - if ( is_null( $version ) ) - { - return extension_loaded( $extension ); - } - return extension_loaded( $extension ) && version_compare( phpversion( $extension ), $version, ">=" ) ; - } - - /** - * Determines if the specified function is available. - * - * Examples: - * - * ezcBaseFeatures::hasFunction( 'imagepstext' ); - * - * will return true if support for Type 1 fonts is available with your GD - * extension. - * - * @param string $functionName - * @return bool - */ - public static function hasFunction( $functionName ) - { - return function_exists( $functionName ); - } - - /** - * Returns if a given class exists. - * Checks for a given class name and returns if this class exists or not. - * Catches the ezcBaseAutoloadException and returns false, if it was thrown. - * - * @param string $className The class to check for. - * @param bool $autoload True to use __autoload(), otherwise false. - * @return bool True if the class exists. Otherwise false. - */ - public static function classExists( $className, $autoload = true ) - { - try - { - if ( class_exists( $className, $autoload ) ) - { - return true; - } - return false; - } - catch ( ezcBaseAutoloadException $e ) - { - return false; - } - } - - /** - * Returns the operating system on which PHP is running. - * - * This method returns a sanitized form of the OS name, example - * return values are "Windows", "Mac", "Linux" and "FreeBSD". In - * all other cases it returns the value of the internal PHP constant - * PHP_OS. - * - * @return string - */ - public static function os() - { - if ( is_null( self::$os ) ) - { - $uname = php_uname( 's' ); - if ( substr( $uname, 0, 7 ) == 'Windows' ) - { - self::$os = 'Windows'; - } - elseif ( substr( $uname, 0, 3 ) == 'Mac' ) - { - self::$os = 'Mac'; - } - elseif ( strtolower( $uname ) == 'linux' ) - { - self::$os = 'Linux'; - } - elseif ( strtolower( substr( $uname, 0, 7 ) ) == 'freebsd' ) - { - self::$os = 'FreeBSD'; - } - else - { - self::$os = PHP_OS; - } - } - return self::$os; - } - - /** - * Returns the path of the specified executable, if it can be found in the system's path. - * - * It scans the PATH enviroment variable based on the OS to find the - * $fileName. For Windows, the path is with \, not /. If $fileName is not - * found, it returns null. - * - * @todo consider using getenv( 'PATH' ) instead of $_ENV['PATH'] - * (but that won't work under IIS) - * - * @param string $fileName - * @return string - */ - public static function findExecutableInPath( $fileName ) - { - if ( array_key_exists( 'PATH', $_ENV ) ) - { - $envPath = trim( $_ENV['PATH'] ); - } - else if ( ( $envPath = getenv( 'PATH' ) ) !== false ) - { - $envPath = trim( $envPath ); - } - if ( is_string( $envPath ) && strlen( trim( $envPath ) ) == 0 ) - { - $envPath = false; - } - - switch ( self::os() ) - { - case 'Unix': - case 'FreeBSD': - case 'Mac': - case 'MacOS': - case 'Darwin': - case 'Linux': - case 'SunOS': - if ( $envPath ) - { - $dirs = explode( ':', $envPath ); - foreach ( $dirs as $dir ) - { - // The @-operator is used here mainly to avoid - // open_basedir warnings. If open_basedir (or any other - // circumstance) prevents the desired file from being - // accessed, it is fine for file_exists() to return - // false, since it is useless for use then, anyway. - if ( file_exists( "{$dir}/{$fileName}" ) ) - { - return "{$dir}/{$fileName}"; - } - } - } - // The @-operator is used here mainly to avoid open_basedir - // warnings. If open_basedir (or any other circumstance) - // prevents the desired file from being accessed, it is fine - // for file_exists() to return false, since it is useless for - // use then, anyway. - elseif ( @file_exists( "./{$fileName}" ) ) - { - return $fileName; - } - break; - case 'Windows': - if ( $envPath ) - { - $dirs = explode( ';', $envPath ); - foreach ( $dirs as $dir ) - { - // The @-operator is used here mainly to avoid - // open_basedir warnings. If open_basedir (or any other - // circumstance) prevents the desired file from being - // accessed, it is fine for file_exists() to return - // false, since it is useless for use then, anyway. - if ( @file_exists( "{$dir}\\{$fileName}.exe" ) ) - { - return "{$dir}\\{$fileName}.exe"; - } - } - } - // The @-operator is used here mainly to avoid open_basedir - // warnings. If open_basedir (or any other circumstance) - // prevents the desired file from being accessed, it is fine - // for file_exists() to return false, since it is useless for - // use then, anyway. - elseif ( @file_exists( "{$fileName}.exe" ) ) - { - return "{$fileName}.exe"; - } - break; - } - return null; - } - - /** - * Reset the cached information. - * - * @return void - * @access private - * @ignore - */ - public static function reset() - { - self::$imageIdentify = null; - self::$imageConvert = null; - self::$os = null; - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/file.php b/vendor/eher/phpunit/src/php/ezc/Base/file.php deleted file mode 100644 index 548a4dd..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/file.php +++ /dev/null @@ -1,495 +0,0 @@ - - * - * - * - * @package Base - * @version //autogentag// - * @mainclass - */ -class ezcBaseFile -{ - /** - * This is the callback used by findRecursive to collect data. - * - * This callback method works together with walkRecursive() and is called - * for every file/and or directory. The $context is a callback specific - * container in which data can be stored and shared between the different - * calls to the callback function. The walkRecursive() function also passes - * in the full absolute directory in $sourceDir, the filename in $fileName - * and file information (such as size, modes, types) as an array as - * returned by PHP's stat() in the $fileInfo parameter. - * - * @param ezcBaseFileFindContext $context - * @param string $sourceDir - * @param string $fileName - * @param array(stat) $fileInfo - */ - static protected function findRecursiveCallback( ezcBaseFileFindContext $context, $sourceDir, $fileName, $fileInfo ) - { - // ignore if we have a directory - if ( $fileInfo['mode'] & 0x4000 ) - { - return; - } - - // update the statistics - $context->elements[] = $sourceDir . DIRECTORY_SEPARATOR . $fileName; - $context->count++; - $context->size += $fileInfo['size']; - } - - /** - * Walks files and directories recursively on a file system - * - * This method walks over a directory and calls a callback from every file - * and directory it finds. You can use $includeFilters to include only - * specific files, and $excludeFilters to exclude certain files from being - * returned. The function will always go into subdirectories even if the - * entry would not have passed the filters. - * - * The callback is passed in the $callback parameter, and the - * $callbackContext will be send to the callback function/method as - * parameter so that you can store data in there that persists with all the - * calls and recursive calls to this method. It's up to the callback method - * to do something useful with this. The callback function's parameters are - * in order: - * - *
      - *
    • ezcBaseFileFindContext $context
    • - *
    • string $sourceDir
    • - *
    • string $fileName
    • - *
    • array(stat) $fileInfo
    • - *
    - * - * See {@see findRecursiveCallback()} for an example of a callback function. - * - * Filters are regular expressions and are therefore required to have - * starting and ending delimiters. The Perl Compatible syntax is used as - * regular expression language. - * - * @param string $sourceDir - * @param array(string) $includeFilters - * @param array(string) $excludeFilters - * @param callback $callback - * @param mixed $callbackContext - * - * @throws ezcBaseFileNotFoundException if the $sourceDir directory is not - * a directory or does not exist. - * @throws ezcBaseFilePermissionException if the $sourceDir directory could - * not be opened for reading. - * @return array - */ - static public function walkRecursive( $sourceDir, array $includeFilters = array(), array $excludeFilters = array(), $callback, &$callbackContext ) - { - if ( !is_dir( $sourceDir ) ) - { - throw new ezcBaseFileNotFoundException( $sourceDir, 'directory' ); - } - $elements = array(); - $d = @dir( $sourceDir ); - if ( !$d ) - { - throw new ezcBaseFilePermissionException( $sourceDir, ezcBaseFileException::READ ); - } - - while ( ( $entry = $d->read() ) !== false ) - { - if ( $entry == '.' || $entry == '..' ) - { - continue; - } - - $fileInfo = @stat( $sourceDir . DIRECTORY_SEPARATOR . $entry ); - if ( !$fileInfo ) - { - $fileInfo = array( 'size' => 0, 'mode' => 0 ); - } - - if ( $fileInfo['mode'] & 0x4000 ) - { - // We need to ignore the Permission exceptions here as it can - // be normal that a directory can not be accessed. We only need - // the exception if the top directory could not be read. - try - { - call_user_func_array( $callback, array( $callbackContext, $sourceDir, $entry, $fileInfo ) ); - $subList = self::walkRecursive( $sourceDir . DIRECTORY_SEPARATOR . $entry, $includeFilters, $excludeFilters, $callback, $callbackContext ); - $elements = array_merge( $elements, $subList ); - } - catch ( ezcBaseFilePermissionException $e ) - { - } - } - else - { - // By default a file is included in the return list - $ok = true; - // Iterate over the $includeFilters and prohibit the file from - // being returned when atleast one of them does not match - foreach ( $includeFilters as $filter ) - { - if ( !preg_match( $filter, $sourceDir . DIRECTORY_SEPARATOR . $entry ) ) - { - $ok = false; - break; - } - } - // Iterate over the $excludeFilters and prohibit the file from - // being returns when atleast one of them matches - foreach ( $excludeFilters as $filter ) - { - if ( preg_match( $filter, $sourceDir . DIRECTORY_SEPARATOR . $entry ) ) - { - $ok = false; - break; - } - } - - // If everything's allright, call the callback and add the - // entry to the elements array - if ( $ok ) - { - call_user_func( $callback, $callbackContext, $sourceDir, $entry, $fileInfo ); - $elements[] = $sourceDir . DIRECTORY_SEPARATOR . $entry; - } - } - } - sort( $elements ); - return $elements; - } - - /** - * Finds files recursively on a file system - * - * With this method you can scan the file system for files. You can use - * $includeFilters to include only specific files, and $excludeFilters to - * exclude certain files from being returned. The function will always go - * into subdirectories even if the entry would not have passed the filters. - * It uses the {@see walkRecursive()} method to do the actually recursion. - * - * Filters are regular expressions and are therefore required to have - * starting and ending delimiters. The Perl Compatible syntax is used as - * regular expression language. - * - * If you pass an empty array to the $statistics argument, the function - * will in details about the number of files found into the 'count' array - * element, and the total filesize in the 'size' array element. Because this - * argument is passed by reference, you *have* to pass a variable and you - * can not pass a constant value such as "array()". - * - * @param string $sourceDir - * @param array(string) $includeFilters - * @param array(string) $excludeFilters - * @param array() $statistics - * - * @throws ezcBaseFileNotFoundException if the $sourceDir directory is not - * a directory or does not exist. - * @throws ezcBaseFilePermissionException if the $sourceDir directory could - * not be opened for reading. - * @return array - */ - static public function findRecursive( $sourceDir, array $includeFilters = array(), array $excludeFilters = array(), &$statistics = null ) - { - // init statistics array - if ( !is_array( $statistics ) || !array_key_exists( 'size', $statistics ) || !array_key_exists( 'count', $statistics ) ) - { - $statistics['size'] = 0; - $statistics['count'] = 0; - } - - // create the context, and then start walking over the array - $context = new ezcBaseFileFindContext; - self::walkRecursive( $sourceDir, $includeFilters, $excludeFilters, array( 'ezcBaseFile', 'findRecursiveCallback' ), $context ); - - // collect the statistics - $statistics['size'] = $context->size; - $statistics['count'] = $context->count; - - // return the found and pattern-matched files - sort( $context->elements ); - return $context->elements; - } - - - /** - * Removes files and directories recursively from a file system - * - * This method recursively removes the $directory and all its contents. - * You should be extremely careful with this method as it has the - * potential to erase everything that the current user has access to. - * - * @param string $directory - */ - static public function removeRecursive( $directory ) - { - $sourceDir = realpath( $directory ); - if ( !$sourceDir ) - { - throw new ezcBaseFileNotFoundException( $directory, 'directory' ); - } - $d = @dir( $sourceDir ); - if ( !$d ) - { - throw new ezcBaseFilePermissionException( $directory, ezcBaseFileException::READ ); - } - // check if we can remove the dir - $parentDir = realpath( $directory . DIRECTORY_SEPARATOR . '..' ); - if ( !is_writable( $parentDir ) ) - { - throw new ezcBaseFilePermissionException( $parentDir, ezcBaseFileException::WRITE ); - } - // loop over contents - while ( ( $entry = $d->read() ) !== false ) - { - if ( $entry == '.' || $entry == '..' ) - { - continue; - } - - if ( is_dir( $sourceDir . DIRECTORY_SEPARATOR . $entry ) ) - { - self::removeRecursive( $sourceDir . DIRECTORY_SEPARATOR . $entry ); - } - else - { - if ( @unlink( $sourceDir . DIRECTORY_SEPARATOR . $entry ) === false ) - { - throw new ezcBaseFilePermissionException( $directory . DIRECTORY_SEPARATOR . $entry, ezcBaseFileException::REMOVE ); - } - } - } - $d->close(); - rmdir( $sourceDir ); - } - - /** - * Recursively copy a file or directory. - * - * Recursively copy a file or directory in $source to the given - * destination. If a depth is given, the operation will stop, if the given - * recursion depth is reached. A depth of -1 means no limit, while a depth - * of 0 means, that only the current file or directory will be copied, - * without any recursion. - * - * You may optionally define modes used to create files and directories. - * - * @throws ezcBaseFileNotFoundException - * If the $sourceDir directory is not a directory or does not exist. - * @throws ezcBaseFilePermissionException - * If the $sourceDir directory could not be opened for reading, or the - * destination is not writeable. - * - * @param string $source - * @param string $destination - * @param int $depth - * @param int $dirMode - * @param int $fileMode - * @return void - */ - static public function copyRecursive( $source, $destination, $depth = -1, $dirMode = 0775, $fileMode = 0664 ) - { - // Check if source file exists at all. - if ( !is_file( $source ) && !is_dir( $source ) ) - { - throw new ezcBaseFileNotFoundException( $source ); - } - - // Destination file should NOT exist - if ( is_file( $destination ) || is_dir( $destination ) ) - { - throw new ezcBaseFilePermissionException( $destination, ezcBaseFileException::WRITE ); - } - - // Skip non readable files in source directory - if ( !is_readable( $source ) ) - { - return; - } - - // Copy - if ( is_dir( $source ) ) - { - mkdir( $destination ); - // To ignore umask, umask() should not be changed with - // multithreaded servers... - chmod( $destination, $dirMode ); - } - elseif ( is_file( $source ) ) - { - copy( $source, $destination ); - chmod( $destination, $fileMode ); - } - - if ( ( $depth === 0 ) || - ( !is_dir( $source ) ) ) - { - // Do not recurse (any more) - return; - } - - // Recurse - $dh = opendir( $source ); - while ( ( $file = readdir( $dh ) ) !== false ) - { - if ( ( $file === '.' ) || - ( $file === '..' ) ) - { - continue; - } - - self::copyRecursive( - $source . '/' . $file, - $destination . '/' . $file, - $depth - 1, $dirMode, $fileMode - ); - } - } - - /** - * Calculates the relative path of the file/directory '$path' to a given - * $base path. - * - * $path and $base should be fully absolute paths. This function returns the - * answer of "How do I go from $base to $path". If the $path and $base are - * the same path, the function returns '.'. This method does not touch the - * filesystem. - * - * @param string $path - * @param string $base - * @return string - */ - static public function calculateRelativePath( $path, $base ) - { - // Sanitize the paths to use the correct directory separator for the platform - $path = strtr( $path, '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR ); - $base = strtr( $base, '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR ); - - $base = explode( DIRECTORY_SEPARATOR, $base ); - $path = explode( DIRECTORY_SEPARATOR, $path ); - - // If the paths are the same we return - if ( $base === $path ) - { - return '.'; - } - - $result = ''; - - $pathPart = array_shift( $path ); - $basePart = array_shift( $base ); - while ( $pathPart == $basePart ) - { - $pathPart = array_shift( $path ); - $basePart = array_shift( $base ); - } - - if ( $pathPart != null ) - { - array_unshift( $path, $pathPart ); - } - if ( $basePart != null ) - { - array_unshift( $base, $basePart ); - } - - $result = str_repeat( '..' . DIRECTORY_SEPARATOR, count( $base ) ); - // prevent a trailing DIRECTORY_SEPARATOR in case there is only a .. - if ( count( $path ) == 0 ) - { - $result = substr( $result, 0, -strlen( DIRECTORY_SEPARATOR ) ); - } - $result .= join( DIRECTORY_SEPARATOR, $path ); - - return $result; - } - - /** - * Returns whether the passed $path is an absolute path, giving the current $os. - * - * With the $os parameter you can tell this function to use the semantics - * for a different operating system to determine whether a path is - * absolute. The $os argument defaults to the OS that the script is running - * on. - * - * @param string $path - * @param string $os - * @return bool - */ - public static function isAbsolutePath( $path, $os = null ) - { - if ( $os === null ) - { - $os = ezcBaseFeatures::os(); - } - - // Stream wrapper like phar can also be considered absolute paths - if ( preg_match( '(^[a-z]{3,}://)S', $path ) ) - { - return true; - } - - switch ( $os ) - { - case 'Windows': - // Sanitize the paths to use the correct directory separator for the platform - $path = strtr( $path, '\\/', '\\\\' ); - - // Absolute paths with drive letter: X:\ - if ( preg_match( '@^[A-Z]:\\\\@i', $path ) ) - { - return true; - } - - // Absolute paths with network paths: \\server\share\ - if ( preg_match( '@^\\\\\\\\[A-Z]+\\\\[^\\\\]@i', $path ) ) - { - return true; - } - break; - case 'Mac': - case 'Linux': - case 'FreeBSD': - default: - // Sanitize the paths to use the correct directory separator for the platform - $path = strtr( $path, '\\/', '//' ); - - if ( $path[0] == '/' ) - { - return true; - } - } - return false; - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/init.php b/vendor/eher/phpunit/src/php/ezc/Base/init.php deleted file mode 100644 index 5fcd757..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/init.php +++ /dev/null @@ -1,125 +0,0 @@ - - * - * - * - * You will also need to configure which callback class to call. This you do - * with the ezcBaseInit::setCallback() method. The following examples sets the - * callback classname for the configuration identifier - * 'ezcInitConfigurationManager' to 'cfgConfigurationManager': - * - * - * - * - * - * The class 'cfgConfigurationManager' is required to implement the - * ezcBaseConfigurationInitializer interface, which defines only one method: - * configureObject(). An example on how to implement such a class could be: - * - * - * init( 'ezcConfigurationIniReader', 'settings', array( 'useComments' => true ) ); - * } - * } - * ?> - * - * - * Of course the implementation of this callback class is up to the application - * developer that uses the component (in this example the Configuration - * component's class ezcConfigurationManager). - * - * @package Base - * @version //autogentag// - */ -class ezcBaseInit -{ - /** - * Contains the callback where the identifier is the key of the array, and the classname to callback to the value. - * - * @var array(string=>string) - */ - static private $callbackMap = array(); - - /** - * Adds the classname $callbackClassname as callback for the identifier $identifier. - * - * @param string $identifier - * @param string $callbackClassname - */ - public static function setCallback( $identifier, $callbackClassname ) - { - if ( array_key_exists( $identifier, self::$callbackMap ) ) - { - throw new ezcBaseInitCallbackConfiguredException( $identifier, self::$callbackMap[$identifier] ); - } - else - { - // Check if the passed classname actually exists - if ( !ezcBaseFeatures::classExists( $callbackClassname, true ) ) - { - throw new ezcBaseInitInvalidCallbackClassException( $callbackClassname ); - } - - // Check if the passed classname actually implements the interface. - if ( !in_array( 'ezcBaseConfigurationInitializer', class_implements( $callbackClassname ) ) ) - { - throw new ezcBaseInitInvalidCallbackClassException( $callbackClassname ); - } - - self::$callbackMap[$identifier] = $callbackClassname; - } - } - - /** - * Uses the configured callback belonging to $identifier to configure the $object. - * - * The method will return the return value of the callback method, or null - * in case there was no callback set for the specified $identifier. - * - * @param string $identifier - * @param object $object - * @return mixed - */ - public static function fetchConfig( $identifier, $object ) - { - if ( isset( self::$callbackMap[$identifier] ) ) - { - $callbackClassname = self::$callbackMap[$identifier]; - return call_user_func( array( $callbackClassname, 'configureObject' ), $object ); - } - return null; - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/interfaces/configuration_initializer.php b/vendor/eher/phpunit/src/php/ezc/Base/interfaces/configuration_initializer.php deleted file mode 100644 index 96371c6..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/interfaces/configuration_initializer.php +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/interfaces/exportable.php b/vendor/eher/phpunit/src/php/ezc/Base/interfaces/exportable.php deleted file mode 100644 index 4bb2590..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/interfaces/exportable.php +++ /dev/null @@ -1,33 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/interfaces/persistable.php b/vendor/eher/phpunit/src/php/ezc/Base/interfaces/persistable.php deleted file mode 100644 index 5070638..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/interfaces/persistable.php +++ /dev/null @@ -1,40 +0,0 @@ -mixed) - */ - public function getState(); - - /** - * Accepts an array containing data for one or more of the class' properties. - * - * @param array $properties - */ - public function setState( array $properties ); -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/metadata.php b/vendor/eher/phpunit/src/php/ezc/Base/metadata.php deleted file mode 100644 index b15bbfa..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/metadata.php +++ /dev/null @@ -1,120 +0,0 @@ -reader = new ezcBaseMetaDataTarballReader; - break; - case 'pear': - $this->reader = new ezcBaseMetaDataPearReader; - break; - default: - throw new ezcBaseMetaDataReaderException( "Unknown install method '$installMethod'." ); - break; - } - } - - /** - * Returns the version string for the installed eZ Components bundle. - * - * A version string such as "2008.2.2" is returned. - * - * @return string - */ - public function getBundleVersion() - { - return $this->reader->getBundleVersion(); - } - - /** - * Returns a PHP version string that describes the required PHP version for - * this installed eZ Components bundle. - * - * @return string - */ - public function getRequiredPhpVersion() - { - return $this->reader->getRequiredPhpVersion(); - } - - /** - * Returns whether $componentName is installed - * - * If installed with PEAR, it checks the PEAR registry whether the - * component is there. In case the tarball installation method is used, it - * will return true for every component that exists (because all of them - * are then available). - * - * @return bool - */ - public function isComponentInstalled( $componentName ) - { - return $this->reader->isComponentInstalled( $componentName ); - } - - /** - * Returns the version string of the available $componentName or false when - * the component is not installed. - * - * @return string - */ - public function getComponentVersion( $componentName ) - { - return $this->reader->getComponentVersion( $componentName ); - } - - /** - * Returns a list of components that $componentName depends on. - * - * If $componentName is left empty, all installed components are returned. - * - * The returned array has as keys the component names, and as values the - * version of the components. - * - * @return array(string=>string). - */ - public function getComponentDependencies( $componentName = null ) - { - if ( $componentName === null ) - { - return $this->reader->getComponentDependencies(); - } - else - { - return $this->reader->getComponentDependencies( $componentName ); - } - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/metadata/pear.php b/vendor/eher/phpunit/src/php/ezc/Base/metadata/pear.php deleted file mode 100644 index 6547496..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/metadata/pear.php +++ /dev/null @@ -1,129 +0,0 @@ -registry = new PEAR_Registry; - } - - /** - * Returns the version string for the installed eZ Components bundle. - * - * A version string such as "2008.2.2" is returned. - * - * @return string - */ - public function getBundleVersion() - { - @$packageInfo = $this->registry->packageInfo( 'ezcomponents', null, 'components.ez.no' ); - return $packageInfo['version']['release']; - } - - /** - * Returns a PHP version string that describes the required PHP version for - * this installed eZ Components bundle. - * - * @return string - */ - public function getRequiredPhpVersion() - { - @$packageInfo = $this->registry->packageInfo( 'ezcomponents', null, 'components.ez.no' ); - if ( array_key_exists( 'required', $packageInfo['dependencies'] ) ) - { - return $packageInfo['dependencies']['required']['php']['min']; - } - return $packageInfo['dependencies']['php']['min']; - } - - /** - * Returns whether $componentName is installed - * - * Checks the PEAR registry whether the component is there. - * - * @return bool - */ - public function isComponentInstalled( $componentName ) - { - @$packageInfo = $this->registry->packageInfo( $componentName, null, 'components.ez.no' ); - return is_array( $packageInfo ); - } - - /** - * Returns the version string of the available $componentName or false when - * the component is not installed. - * - * @return string - */ - public function getComponentVersion( $componentName ) - { - @$packageInfo = $this->registry->packageInfo( $componentName, null, 'components.ez.no' ); - $release = $packageInfo['version']['release']; - return $release === null ? false : $release; - } - - /** - * Returns a list of components that $componentName depends on. - * - * If $componentName is left empty, all installed components are returned. - * - * The returned array has as keys the component names, and as values the - * version of the components. - * - * @return array(string=>string). - */ - public function getComponentDependencies( $componentName = 'ezcomponents' ) - { - @$packageInfo = $this->registry->packageInfo( $componentName, 'dependencies', 'components.ez.no' ); - if ( isset( $packageInfo['required']['package'] ) ) - { - $deps = array(); - if ( isset( $packageInfo['required']['package']['name'] ) ) - { - $deps[$packageInfo['required']['package']['name']] = $packageInfo['required']['package']['min']; - } - else - { - foreach ( $packageInfo['required']['package'] as $package ) - { - $deps[$package['name']] = $package['min']; - } - } - return $deps; - } - return array(); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/metadata/tarball.php b/vendor/eher/phpunit/src/php/ezc/Base/metadata/tarball.php deleted file mode 100644 index a298a0d..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/metadata/tarball.php +++ /dev/null @@ -1,153 +0,0 @@ -xml = simplexml_load_file( $filename ); - } - - /** - * Returns the version string for the installed eZ Components bundle. - * - * A version string such as "2008.2.2" is returned. - * - * @return string - */ - public function getBundleVersion() - { - return (string) $this->xml->version; - } - - /** - * Returns a PHP version string that describes the required PHP version for - * this installed eZ Components bundle. - * - * @return string - */ - public function getRequiredPhpVersion() - { - return (string) $this->xml->deps->php; - } - - /** - * Returns whether $componentName is installed - * - * Returns true for every component that exists (because all of them are - * then available). - * - * @return bool - */ - public function isComponentInstalled( $componentName ) - { - $root = $this->xml->deps->packages->package; - - foreach ( $root as $package ) - { - if ( (string) $package['name'] == $componentName ) - { - return true; - } - } - return false; - } - - /** - * Returns the version string of the available $componentName or false when - * the component is not installed. - * - * @return string - */ - public function getComponentVersion( $componentName ) - { - $root = $this->xml->deps->packages->package; - - foreach ( $root as $package ) - { - if ( (string) $package['name'] == $componentName ) - { - return (string) $package['version']; - } - } - return false; - } - - /** - * Returns a list of components that $componentName depends on. - * - * If $componentName is left empty, all installed components are returned. - * - * The returned array has as keys the component names, and as values the - * version of the components. It returns null of the $componentName - * is not found. - * - * @return array(string=>string). - */ - public function getComponentDependencies( $componentName = null ) - { - $baseVersion = false; - $root = $this->xml->deps->packages; - $found = $componentName === null ? true : false; - - // in case $componentName != null, we loop through all the components - // in the file, and figure out the new root that we can list dependency - // packages from. - foreach ( $root->package as $package ) - { - if ( (string) $package['name'] == 'Base' ) - { - $baseVersion = $package['version']; - } - if ( !$found && (string) $package['name'] == $componentName ) - { - $root = $package->deps; - $found = true; - } - } - - if ( !$found ) - { - return null; - } - - // We always add the Base dependency even though it's not in the dependency file. - $deps = array(); - $deps['Base'] = (string) $baseVersion; - - if ( !isset( $root->package ) ) - { - return $deps; - } - foreach ( $root->package as $package ) - { - $deps[(string) $package['name']] = (string) $package['version']; - } - return $deps; - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/options.php b/vendor/eher/phpunit/src/php/ezc/Base/options.php deleted file mode 100644 index 1c94176..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/options.php +++ /dev/null @@ -1,174 +0,0 @@ -mixed) - */ - protected $properties; - - /** - * Construct a new options object. - * Options are constructed from an option array by default. The constructor - * automatically passes the given options to the __set() method to set them - * in the class. - * - * @throws ezcBasePropertyNotFoundException - * If trying to access a non existent property. - * @throws ezcBaseValueException - * If the value for a property is out of range. - * @param array(string=>mixed) $options The initial options to set. - */ - public function __construct( array $options = array() ) - { - foreach ( $options as $option => $value ) - { - $this->__set( $option, $value ); - } - } - - /** - * Merge an array into the actual options object. - * This method merges an array of new options into the actual options object. - * - * @throws ezcBasePropertyNotFoundException - * If trying to access a non existent property. - * @throws ezcBaseValueException - * If the value for a property is out of range. - * @param array(string=>mixed) $newOptions The new options. - */ - public function merge( array $newOptions ) - { - foreach ( $newOptions as $key => $value ) - { - $this->__set( $key, $value ); - } - } - - /** - * Property get access. - * Simply returns a given option. - * - * @throws ezcBasePropertyNotFoundException - * If a the value for the property options is not an instance of - * @param string $propertyName The name of the option to get. - * @return mixed The option value. - * @ignore - * - * @throws ezcBasePropertyNotFoundException - * if the given property does not exist. - * @throws ezcBasePropertyPermissionException - * if the property to be set is a write-only property. - */ - public function __get( $propertyName ) - { - if ( $this->__isset( $propertyName ) === true ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Sets an option. - * This method is called when an option is set. - * - * @param string $propertyName The name of the option to set. - * @param mixed $propertyValue The option value. - * @ignore - * - * @throws ezcBasePropertyNotFoundException - * if the given property does not exist. - * @throws ezcBaseValueException - * if the value to be assigned to a property is invalid. - * @throws ezcBasePropertyPermissionException - * if the property to be set is a read-only property. - */ - abstract public function __set( $propertyName, $propertyValue ); - - /** - * Returns if a option exists. - * - * @param string $propertyName Option name to check for. - * @return bool Whether the option exists. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } - - /** - * Returns if an option exists. - * Allows isset() using ArrayAccess. - * - * @param string $propertyName The name of the option to get. - * @return bool Whether the option exists. - */ - public function offsetExists( $propertyName ) - { - return $this->__isset( $propertyName ); - } - - /** - * Returns an option value. - * Get an option value by ArrayAccess. - * - * @throws ezcBasePropertyNotFoundException - * If $propertyName is not a key in the $properties array. - * @param string $propertyName The name of the option to get. - * @return mixed The option value. - */ - public function offsetGet( $propertyName ) - { - return $this->__get( $propertyName ); - } - - /** - * Set an option. - * Sets an option using ArrayAccess. - * - * @throws ezcBasePropertyNotFoundException - * If $propertyName is not a key in the $properties array. - * @throws ezcBaseValueException - * If the value for a property is out of range. - * @param string $propertyName The name of the option to set. - * @param mixed $propertyValue The value for the option. - */ - public function offsetSet( $propertyName, $propertyValue ) - { - $this->__set( $propertyName, $propertyValue ); - } - - /** - * Unset an option. - * Unsets an option using ArrayAccess. - * - * @throws ezcBasePropertyNotFoundException - * If $propertyName is not a key in the $properties array. - * @throws ezcBaseValueException - * If a the value for a property is out of range. - * @param string $propertyName The name of the option to unset. - */ - public function offsetUnset( $propertyName ) - { - $this->__set( $propertyName, null ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/options/autoload.php b/vendor/eher/phpunit/src/php/ezc/Base/options/autoload.php deleted file mode 100644 index cb16357..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/options/autoload.php +++ /dev/null @@ -1,75 +0,0 @@ -mixed) $options - */ - public function __construct( array $options = array() ) - { - $this->preload = false; - $this->debug = false; - - parent::__construct( $options ); - } - - /** - * Sets the option $name to $value. - * - * @throws ezcBasePropertyNotFoundException - * if the property $name is not defined - * @throws ezcBaseValueException - * if $value is not correct for the property $name - * @param string $name - * @param mixed $value - * @ignore - */ - public function __set( $name, $value ) - { - switch ( $name ) - { - case 'debug': - case 'preload': - if ( !is_bool( $value ) ) - { - throw new ezcBaseValueException( $name, $value, 'bool' ); - } - $this->properties[$name] = $value; - break; - - default: - throw new ezcBasePropertyNotFoundException( $name ); - } - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/struct.php b/vendor/eher/phpunit/src/php/ezc/Base/struct.php deleted file mode 100644 index a3f0846..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/struct.php +++ /dev/null @@ -1,42 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/Base/structs/file_find_context.php b/vendor/eher/phpunit/src/php/ezc/Base/structs/file_find_context.php deleted file mode 100644 index 5d6f79c..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/structs/file_find_context.php +++ /dev/null @@ -1,72 +0,0 @@ -elements = $elements; - $this->count = $count; - $this->size = $size; - } - - /** - * Returns a new instance of this class with the data specified by $array. - * - * $array contains all the data members of this class in the form: - * array('member_name'=>value). - * - * __set_state makes this class exportable with var_export. - * var_export() generates code, that calls this method when it - * is parsed with PHP. - * - * @param array(string=>mixed) $array - * @return ezcBaseFileFindContext - */ - static public function __set_state( array $array ) - { - return new ezcBaseFileFindContext( $array['elements'], $array['count'], $array['size'] ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/Base/structs/repository_directory.php b/vendor/eher/phpunit/src/php/ezc/Base/structs/repository_directory.php deleted file mode 100644 index 4591a8e..0000000 --- a/vendor/eher/phpunit/src/php/ezc/Base/structs/repository_directory.php +++ /dev/null @@ -1,83 +0,0 @@ -type = $type; - $this->basePath = $basePath; - $this->autoloadPath = $autoloadPath; - } - - /** - * Returns a new instance of this class with the data specified by $array. - * - * $array contains all the data members of this class in the form: - * array('member_name'=>value). - * - * __set_state makes this class exportable with var_export. - * var_export() generates code, that calls this method when it - * is parsed with PHP. - * - * @param array(string=>mixed) $array - * @return ezcBaseRepositoryDirectory - */ - static public function __set_state( array $array ) - { - return new ezcBaseRepositoryDirectory( $array['type'], $array['basePath'], $array['autoloadPath'] ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/console_autoload.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/console_autoload.php deleted file mode 100644 index 5a073be..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/console_autoload.php +++ /dev/null @@ -1,76 +0,0 @@ - 'ConsoleTools/exceptions/exception.php', - 'ezcConsoleArgumentException' => 'ConsoleTools/exceptions/argument.php', - 'ezcConsoleOptionException' => 'ConsoleTools/exceptions/option.php', - 'ezcConsoleArgumentAlreadyRegisteredException' => 'ConsoleTools/exceptions/argument_already_registered.php', - 'ezcConsoleArgumentMandatoryViolationException' => 'ConsoleTools/exceptions/argument_mandatory_violation.php', - 'ezcConsoleArgumentTypeViolationException' => 'ConsoleTools/exceptions/argument_type_violation.php', - 'ezcConsoleDialogAbortException' => 'ConsoleTools/exceptions/dialog_abort.php', - 'ezcConsoleInvalidOptionNameException' => 'ConsoleTools/exceptions/invalid_option_name.php', - 'ezcConsoleInvalidOutputTargetException' => 'ConsoleTools/exceptions/invalid_output_target.php', - 'ezcConsoleNoPositionStoredException' => 'ConsoleTools/exceptions/no_position_stored.php', - 'ezcConsoleNoValidDialogResultException' => 'ConsoleTools/exceptions/no_valid_dialog_result.php', - 'ezcConsoleOptionAlreadyRegisteredException' => 'ConsoleTools/exceptions/option_already_registered.php', - 'ezcConsoleOptionArgumentsViolationException' => 'ConsoleTools/exceptions/option_arguments_violation.php', - 'ezcConsoleOptionDependencyViolationException' => 'ConsoleTools/exceptions/option_dependency_violation.php', - 'ezcConsoleOptionExclusionViolationException' => 'ConsoleTools/exceptions/option_exclusion_violation.php', - 'ezcConsoleOptionMandatoryViolationException' => 'ConsoleTools/exceptions/option_mandatory_violation.php', - 'ezcConsoleOptionMissingValueException' => 'ConsoleTools/exceptions/option_missing_value.php', - 'ezcConsoleOptionNoAliasException' => 'ConsoleTools/exceptions/option_no_alias.php', - 'ezcConsoleOptionNotExistsException' => 'ConsoleTools/exceptions/option_not_exists.php', - 'ezcConsoleOptionStringNotWellformedException' => 'ConsoleTools/exceptions/option_string_not_wellformed.php', - 'ezcConsoleOptionTooManyValuesException' => 'ConsoleTools/exceptions/option_too_many_values.php', - 'ezcConsoleOptionTypeViolationException' => 'ConsoleTools/exceptions/option_type_violation.php', - 'ezcConsoleTooManyArgumentsException' => 'ConsoleTools/exceptions/argument_too_many.php', - 'ezcConsoleDialogValidator' => 'ConsoleTools/interfaces/dialog_validator.php', - 'ezcConsoleQuestionDialogValidator' => 'ConsoleTools/interfaces/question_dialog_validator.php', - 'ezcConsoleDialog' => 'ConsoleTools/interfaces/dialog.php', - 'ezcConsoleDialogOptions' => 'ConsoleTools/options/dialog.php', - 'ezcConsoleInputHelpGenerator' => 'ConsoleTools/interfaces/input_help_generator.php', - 'ezcConsoleInputValidator' => 'ConsoleTools/interfaces/input_validator.php', - 'ezcConsoleMenuDialogValidator' => 'ConsoleTools/interfaces/menu_dialog_validator.php', - 'ezcConsoleQuestionDialogCollectionValidator' => 'ConsoleTools/dialog/validators/question_dialog_collection.php', - 'ezcConsoleArgument' => 'ConsoleTools/input/argument.php', - 'ezcConsoleArguments' => 'ConsoleTools/input/arguments.php', - 'ezcConsoleDialogViewer' => 'ConsoleTools/dialog_viewer.php', - 'ezcConsoleInput' => 'ConsoleTools/input.php', - 'ezcConsoleInputStandardHelpGenerator' => 'ConsoleTools/input/help_generators/standard.php', - 'ezcConsoleMenuDialog' => 'ConsoleTools/dialog/menu_dialog.php', - 'ezcConsoleMenuDialogDefaultValidator' => 'ConsoleTools/dialog/validators/menu_dialog_default.php', - 'ezcConsoleMenuDialogOptions' => 'ConsoleTools/options/menu_dialog.php', - 'ezcConsoleOption' => 'ConsoleTools/input/option.php', - 'ezcConsoleOptionRule' => 'ConsoleTools/structs/option_rule.php', - 'ezcConsoleOutput' => 'ConsoleTools/output.php', - 'ezcConsoleOutputFormat' => 'ConsoleTools/structs/output_format.php', - 'ezcConsoleOutputFormats' => 'ConsoleTools/structs/output_formats.php', - 'ezcConsoleOutputOptions' => 'ConsoleTools/options/output.php', - 'ezcConsoleProgressMonitor' => 'ConsoleTools/progressmonitor.php', - 'ezcConsoleProgressMonitorOptions' => 'ConsoleTools/options/progressmonitor.php', - 'ezcConsoleProgressbar' => 'ConsoleTools/progressbar.php', - 'ezcConsoleProgressbarOptions' => 'ConsoleTools/options/progressbar.php', - 'ezcConsoleQuestionDialog' => 'ConsoleTools/dialog/question_dialog.php', - 'ezcConsoleQuestionDialogMappingValidator' => 'ConsoleTools/dialog/validators/question_dialog_mapping.php', - 'ezcConsoleQuestionDialogOptions' => 'ConsoleTools/options/question_dialog.php', - 'ezcConsoleQuestionDialogRegexValidator' => 'ConsoleTools/dialog/validators/question_dialog_regex.php', - 'ezcConsoleQuestionDialogTypeValidator' => 'ConsoleTools/dialog/validators/question_dialog_type.php', - 'ezcConsoleStandardInputValidator' => 'ConsoleTools/input/validators/standard.php', - 'ezcConsoleStatusbar' => 'ConsoleTools/statusbar.php', - 'ezcConsoleStatusbarOptions' => 'ConsoleTools/options/statusbar.php', - 'ezcConsoleStringTool' => 'ConsoleTools/tools/string.php', - 'ezcConsoleTable' => 'ConsoleTools/table.php', - 'ezcConsoleTableCell' => 'ConsoleTools/table/cell.php', - 'ezcConsoleTableOptions' => 'ConsoleTools/options/table.php', - 'ezcConsoleTableRow' => 'ConsoleTools/table/row.php', -); -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/menu_dialog.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/menu_dialog.php deleted file mode 100644 index e76e7da..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/menu_dialog.php +++ /dev/null @@ -1,217 +0,0 @@ - null, - "output" => null, - ); - - /** - * Creates a new menu dialog. - * Creates a new question dialog to be displayed to the user. All behaviour is - * defined through the $options parameter. The $output parameter is used to - * display the dialog in the {@link display()} method. - * - * @param ezcConsoleOutput $output Output object. - * @param ezcConsoleMenuDialogOptions $options The options. - * @return void - */ - public function __construct( ezcConsoleOutput $output, ezcConsoleMenuDialogOptions $options = null ) - { - $this->output = $output; - $this->options = $options === null ? new ezcConsoleMenuDialogOptions() : $options; - } - - /** - * Returns if the dialog retrieved a valid result. - * If a valid result has already been received, this method returns true, - * otherwise false. - * - * @return bool If a valid result was retrieved. - */ - public function hasValidResult() - { - return ( $this->result !== null ); - } - - /** - * Returns the result retrieved. - * If no valid result was retreived, yet, this method throws an - * ezcConsoleNoValidDialogResultException. Use {@link hasValidResult()} to - * avoid this. - * - * @return mixed The retreived result. - * - * @throws ezcDialogNoValidResultException - * if this method is called without a valid result being retrieved - * by the object. Use {@link hasValidResult()} to avoid this - * exception. - */ - public function getResult() - { - if ( $this->result === null ) - { - throw new ezcConsoleNoValidDialogResultException(); - } - return $this->result; - } - - /** - * Displays the dialog and retreives a value from the user. - * Displays the dialog and retreives the desired answer from the user. If - * the a valid result is retrieved, it can be obtained using {@link - * getResult()}. The method {@link hasValidResult()} can be used to check - * if a valid result is available. - * - * @return void - * @throws ezcConsoleDialogAbortException - * if the user closes STDIN using -D. - */ - public function display() - { - $this->reset(); - - $text = "{$this->options->text}\n"; - foreach ( $this->options->validator->getElements() as $key => $entry ) - { - $text .= sprintf( - $this->options->formatString, - $key, - $entry - ); - } - $text .= "\n{$this->options->selectText}{$this->options->validator->getResultString()} "; - - $this->output->outputText( $text, $this->options->format ); - - $result = $this->options->validator->fixup( - ezcConsoleDialogViewer::readLine() - ); - if ( $this->options->validator->validate( $result ) ) - { - $this->result = $result; - } - } - - /** - * Reset the dialog. - * Resets a possibly received result and all changes made to the dialog - * during {@link display()}. After that, the dialog can be re-used. All - * option values are kept. - * - * @return void - */ - public function reset() - { - $this->result = null; - } - - /** - * Property read access. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * @ignore - */ - public function __get( $propertyName ) - { - if ( array_key_exists( $propertyName, $this->properties ) ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Property write access. - * - * @param string $propertyName Name of the property. - * @param mixed $propertyValue The value for the property. - * - * @throws ezcBasePropertyPermissionException - * If the property you try to access is read-only. - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "options": - if ( ( $propertyValue instanceof ezcConsoleMenuDialogOptions ) === false ) - { - throw new ezcBaseValueException( - $propertyName, - ( is_object( $propertyValue ) ? get_class( $propertyValue ) : gettype( $propertyValue ) ), - "instance of ezcConsoleMenuDialogOptions" - ); - } - break; - case "output": - if ( ( $propertyValue instanceof ezcConsoleOutput ) === false ) - { - throw new ezcBaseValueException( - $propertyName, - ( is_object( $propertyValue ) ? get_class( $propertyValue ) : gettype( $propertyValue ) ), - "instance of ezcConsoleOutput" - ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property to check. - * @return bool If the property exists or not. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/question_dialog.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/question_dialog.php deleted file mode 100644 index 5f8243d..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/question_dialog.php +++ /dev/null @@ -1,251 +0,0 @@ - null, - "output" => null, - ); - - /** - * Creates a new question dialog. - * Creates a new menu dialog to be displayed to the user. All behaviour is - * defined through the $options parameter. The $output parameter is used to - * display the dialog in the {@link display()} method. - * - * @param ezcConsoleOutput $output Output object. - * @param ezcConsoleQuestionDialogOptions $options Options. - * @return void - */ - public function __construct( ezcConsoleOutput $output, ezcConsoleQuestionDialogOptions $options = null ) - { - $this->output = $output; - $this->options = $options === null ? new ezcConsoleQuestionDialogOptions() : $options; - } - - /** - * Returns if the dialog retrieved a valid result. - * If a valid result has already been received, this method returns true, - * otherwise false. - * - * @return bool If a valid result was retrieved. - */ - public function hasValidResult() - { - return $this->result !== null; - } - - /** - * Returns the result retrieved. - * If no valid result was retreived, yet, this method should throw an - * ezcConsoleNoValidDialogResultException. - * - * If no valid result was retreived, yet, this method throws an - * ezcConsoleNoValidDialogResultException. Use {@link hasValidResult()} to - * avoid this. - * - * @return mixed The retreived result. - * - * @throws ezcDialogNoValidResultException - * if this method is called without a valid result being retrieved - * by the object. Use {@link hasValidResult()} to avoid this - * exception. - */ - public function getResult() - { - if ( $this->result === null ) - { - throw new ezcConsoleNoValidDialogResultException(); - } - return $this->result; - } - - /** - * Displays the dialog and retreives a value from the user. - * Displays the dialog and retreives the desired answer from the user. If - * the a valid result is retrieved, it can be obtained using {@link - * getResult()}. The method {@link hasValidResult()} can be used to check - * if a valid result is available. - * - * @return void - * @throws ezcConsoleDialogAbortException - * if the user closes STDIN using -D. - */ - public function display() - { - $this->reset(); - - $this->output->outputText( - $this->options->text . ( $this->options->showResults === true ? " " . $this->options->validator->getResultString() : "" ) . " ", - $this->options->format - ); - $result = $this->options->validator->fixup( ezcConsoleDialogViewer::readLine() ); - if ( $this->options->validator->validate( $result ) ) - { - $this->result = $result; - } - } - - /** - * Reset the dialog. - * Resets a possibly received result and all changes made to the dialog - * during {@link display()}. After that, the dialog can be re-used. All - * option values are kept. - * - * @return void - */ - public function reset() - { - $this->result = null; - } - - /** - * Returns a ready to use yes/no question dialog. - * Returns a question dialog, which requests the answers "y" for "yes" or - * "n" for "no" from the user. The answer is converted to lower-case. - * - * - * // Would you like to proceed? (y/n) - * $dialog = ezcConsoleDialog( $out, "Would you like to proceed?" ); - * - * // Would you like to proceed? (y/n) [n] - * $dialog = ezcConsoleDialog( $out, "Would you like to proceed?", "n" ); - * - * - * @param ezcConsoleOutput $out Output object. - * @param string $questionString Question string. - * @param string $default "y" or "n", if default value is desired. - * @return ezcConsoleQuestionDialog The created dialog. - */ - public static function YesNoQuestion( ezcConsoleOutput $out, $questionString, $default = null ) - { - $opts = new ezcConsoleQuestionDialogOptions(); - $opts->text = $questionString; - $opts->showResults = true; - $opts->validator = new ezcConsoleQuestionDialogMappingValidator( - array( "y", "n" ), - $default, - ezcConsoleQuestionDialogCollectionValidator::CONVERT_LOWER, - array( - 'yes' => 'y', - 'no' => 'n', - ) - ); - - return new ezcConsoleQuestionDialog( $out, $opts ); - } - - /** - * Property read access. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * @ignore - */ - public function __get( $propertyName ) - { - if ( array_key_exists( $propertyName, $this->properties ) ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Property write access. - * - * @param string $propertyName Name of the property. - * @param mixed $propertyValue The value for the property. - * - * @throws ezcBasePropertyPermissionException - * If the property you try to access is read-only. - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "options": - if ( ( $propertyValue instanceof ezcConsoleQuestionDialogOptions ) === false ) - { - throw new ezcBaseValueException( - $propertyName, - ( is_object( $propertyValue ) ? get_class( $propertyValue ) : gettype( $propertyValue ) ), - "instance of ezcConsoleQuestionDialogOptions" - ); - } - break; - case "output": - if ( ( $propertyValue instanceof ezcConsoleOutput ) === false ) - { - throw new ezcBaseValueException( - $propertyName, - ( is_object( $propertyValue ) ? get_class( $propertyValue ) : gettype( $propertyValue ) ), - "instance of ezcConsoleOutput" - ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property to check. - * @return bool If the property exists or not. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/menu_dialog_default.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/menu_dialog_default.php deleted file mode 100644 index 8543626..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/menu_dialog_default.php +++ /dev/null @@ -1,199 +0,0 @@ - array(), - "default" => null, - "conversion" => self::CONVERT_NONE, - ); - - /** - * Creates a new menu default validator. - * Creates a validator specified by the given parameters. The $elements - * array specifies the possible menu items to select from. The item - * identifier (the key of the array) is used to validate the result. The - * assigned text is displayed as the menu item text. If no result is - * provided and an optionally provided default value is used. The - * $conversion parameter can be used to get a conversion applied to the - * result before validating it. - * - * @param array $elements The elements of the menu. - * @param mixed $default The default value. - * @param int $conversion The conversion to apply. - * @return void - */ - public function __construct( array $elements = array(), $default = null, $conversion = self::CONVERT_NONE ) - { - $this->elements = $elements; - $this->default = $default; - $this->conversion = $conversion; - } - - /** - * Returns if the given result is valid. - * Checks if the given result is a valid key in the $elements property. - * - * @param mixed $result The received result. - * @return bool If the result is valid. - */ - public function validate( $result ) - { - return isset( $this->elements[$result] ); - } - - /** - * Returns a fixed version of the result, if possible. - * Converts the given result according to the conversion defined in the - * $conversion property. - * - * @param mixed $result The received result. - * @return mixed The manipulated result. - */ - public function fixup( $result ) - { - if ( $result === "" && $this->default !== null ) - { - return $this->default; - - } - switch ( $this->conversion ) - { - case self::CONVERT_LOWER: - return strtolower( $result ); - case self::CONVERT_UPPER: - return strtoupper( $result ); - case self::CONVERT_NONE: - default: - return $result; - } - } - - /** - * Returns a string representing the default value. - * For example "[y]" to indicate that "y" is the preselected result and - * will be chosen if no result is provided. - * - * @return string The result string. - */ - public function getResultString() - { - return $this->default === null ? "" : "[{$this->default}]"; - } - - /** - * Returns an array of the elements to display. - * - * @return array(string=>string) Elements to display. - */ - public function getElements() - { - return $this->elements; - } - - /** - * Property read access. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * @ignore - */ - public function __get( $propertyName ) - { - if ( isset( $this->$propertyName ) ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Property write access. - * - * @param string $propertyName Name of the property. - * @param mixed $propertyValue The value for the property. - * - * @throws ezcBasePropertyNotFoundException - * If a the value for the property options is not an instance of - * @throws ezcBaseValueException - * If a the value for a property is out of range. - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "elements": - if ( is_array( $propertyValue ) === false ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "array" ); - } - break; - case "default": - if ( is_scalar( $propertyValue ) === false && $propertyValue !== null ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "scalar" ); - } - break; - case "conversion": - if ( $propertyValue !== self::CONVERT_NONE && $propertyValue !== self::CONVERT_UPPER && $propertyValue !== self::CONVERT_LOWER ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "ezcConsoleMenuDialogDefaultValidator::CONVERT_*" ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property. - * @return bool True is the property is set, otherwise false. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_collection.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_collection.php deleted file mode 100644 index c121121..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_collection.php +++ /dev/null @@ -1,186 +0,0 @@ - array(), - "default" => null, - "conversion" => self::CONVERT_NONE, - ); - - /** - * Creates a new question dialog collection validator. - * Creates a new question dialog collection validator, which validates the - * result specified by the user against an array of valid results - * ($collection). If not value is provided by the user a possibly set - * $default value is used instead. The $conversion parameter can optionally - * define a conversion to be performed on the result before validating it. - * Valid conversions are defined by the CONVERT_* constants in this class. - * - * @param array $collection The collection of valid results. - * @param mixed $default Optional default value. - * @param int $conversion CONVERT_* constant. - * @return void - */ - public function __construct( array $collection, $default = null, $conversion = self::CONVERT_NONE ) - { - $this->collection = $collection; - $this->default = $default; - $this->conversion = $conversion; - } - - /** - * Returns if the given result is valid. - * Returns if the result is in the $collection array. - * - * @param mixed $result The received result. - * @return bool If the result is valid. - */ - public function validate( $result ) - { - return in_array( $result, $this->collection ); - } - - /** - * Returns a fixed version of the result, if possible. - * Converts the given result according to the conversion defined in the - * $conversion property. - * - * @param mixed $result The received result. - * @return mixed The manipulated result. - */ - public function fixup( $result ) - { - if ( $result === "" && $this->default !== null ) - { - return $this->default; - } - switch ( $this->conversion ) - { - case self::CONVERT_UPPER: - return strtoupper( $result ); - case self::CONVERT_LOWER: - return strtolower( $result ); - default: - return $result; - } - } - - /** - * Returns a string representing valid results. - * Returns the string that will be displayed with the question to - * indicate valid results to the user and a possibly set default, if - * available. - * - * @return string - */ - public function getResultString() - { - return "(" . implode( "/", $this->collection ) . ")" . ( $this->default !== null ? " [{$this->default}]" : "" ); - } - - /** - * Property read access. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * @ignore - */ - public function __get( $propertyName ) - { - if ( isset( $this->$propertyName ) ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Property write access. - * - * @param string $propertyName Name of the property. - * @param mixed $propertyValue The value for the property. - * - * @throws ezcBasePropertyNotFoundException - * If a the value for the property options is not an instance of - * @throws ezcBaseValueException - * If a the value for a property is out of range. - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "collection": - if ( is_array( $propertyValue ) === false ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "array" ); - } - break; - case "default": - if ( is_scalar( $propertyValue ) === false && $propertyValue !== null ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "scalar" ); - } - break; - case "conversion": - if ( $propertyValue !== self::CONVERT_NONE && $propertyValue !== self::CONVERT_UPPER && $propertyValue !== self::CONVERT_LOWER ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "ezcConsoleQuestionDialogCollectionValidator::CONVERT_*" ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property. - * @return bool True is the property is set, otherwise false. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_mapping.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_mapping.php deleted file mode 100644 index d343b34..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_mapping.php +++ /dev/null @@ -1,142 +0,0 @@ - - * array( - * 'yes' => 'y', - * 'no' => 'n', - * '1' => 'y', - * '0' => 'n' - * ) - * - * While the corresponding collection of valid answers would look like - * this: - * - * array( - * 'y', 'n' - * ) - * - * If the answer 'yes' is received by the validator, it is mapped to 'y', - * therefore considered valid and 'y' is returned as the received value. - * - * @package ConsoleTools - * @version //autogen// - * - * @property array(string) $collection - * The collection of valid answers. - * @property mixed $default - * Default value. - * @property int $conversion - * ezcConsoleDialogValidator::CONVERT_NONE (default) or - * ezcConsoleDialogValidator::CONVERT_LOWER or - * ezcConsoleDialogValidator::CONVERT_UPPER. - * @property array(string=>string) $map - * Mapping of answers to valid answers (e.g. array('yes' => 'y') to - * map 'yes' to 'y' while 'y' must be in $collection). - */ -class ezcConsoleQuestionDialogMappingValidator extends ezcConsoleQuestionDialogCollectionValidator -{ - /** - * Creates a new question dialog mapping validator. - * Creates a new question dialog mapping validator, which validates the - * result specified by the user against an array of valid results - * ($collection). If not value is provided by the user a possibly set - * $default value is used instead. The $conversion parameter can optionally - * define a conversion to be performed on the result before validating it. - * Valid conversions are defined by the CONVERT_* constants in this class. - * - * While this functionality is already provided by {@link - * ezcConsoleQuestionDialogCollectionValidator}, the additional $map - * paramater allows the sepcification of a map of result values. These - * mapping is then checked for matches, before a received answer is - * validated against the collection. - * - * @param array(string) $collection The collection of valid results. - * @param mixed $default Optional default value. - * @param int $conversion CONVERT_* constant. - * @param array(string=>string) $map - * @return void - */ - public function __construct( array $collection, $default = null, $conversion = self::CONVERT_NONE, array $map = array() ) - { - // Initialize additional property - $this->properties['map'] = $map; - - parent::__construct( $collection, $default, $conversion ); - } - - /** - * Returns a fixed version of the result, if possible. - * Converts the given result according to the conversion defined in the - * $conversion property. - * - * @param mixed $result The received result. - * @return mixed The manipulated result. - */ - public function fixup( $result ) - { - if ( $result === "" && $this->default !== null ) - { - return $this->default; - } - switch ( $this->conversion ) - { - case self::CONVERT_UPPER: - $result = strtoupper( $result ); - break; - case self::CONVERT_LOWER: - $result = strtolower( $result ); - break; - } - return ( isset( $this->map[$result] ) ? $this->map[$result] : $result ); - } - - /** - * Property write access. - * - * @param string $propertyName Name of the property. - * @param mixed $propertyValue The value for the property. - * - * @throws ezcBasePropertyNotFoundException - * If a the value for the property options is not an instance of - * @throws ezcBaseValueException - * If a the value for a property is out of range. - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "map": - if ( is_array( $propertyValue ) === false ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "array" ); - } - break; - default: - return parent::__set( $propertyName, $propertyValue ); - } - $this->properties[$propertyName] = $propertyValue; - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_regex.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_regex.php deleted file mode 100644 index 0efba9d..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_regex.php +++ /dev/null @@ -1,169 +0,0 @@ -mixed) - */ - protected $properties = array( - "pattern" => null, - "default" => null, - ); - - /** - * Create a new question dialog regex validator. - * Create a new question dialog regex validator, which validates the result - * specified against a given regular expression. The delimiters and - * eventual modifiers must be included in the pattern. If not value is - * provided by the user a possibly set $default value is used instead. - * - * - * @param string $pattern Pattern to validate against. - * @param mixed $default Default value. - * @return void - */ - public function __construct( $pattern, $default = null ) - { - $this->pattern = $pattern; - $this->default = $default; - } - - /** - * Returns if the given result is valid. - * Returns if the result matches the regular expression. - * - * @param mixed $result The received result. - * @return bool If the result is valid. - */ - public function validate( $result ) - { - if ( $result === "" ) - { - return $this->default !== null; - } - return preg_match( $this->pattern, $result ) > 0; - } - - /** - * Returns a fixed version of the result, if possible. - * If no result was provided by the user, the default value will be - * returned, if set. - * - * @param mixed $result The received result. - * @return mixed The manipulated result. - */ - public function fixup( $result ) - { - if ( $result === "" && $this->default !== null ) - { - return $this->default; - } - return $result; - } - - /** - * Returns a string representing valid results. - * Returns the string that will be displayed with the question to - * indicate valid results to the user and a possibly set default, if - * available. - * - * @return string - */ - public function getResultString() - { - return "(match {$this->pattern})" . ( $this->default !== null ? " [{$this->default}]" : "" ); - } - - /** - * Property read access. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * @ignore - */ - public function __get( $propertyName ) - { - if ( $this->__isset( $propertyName ) ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Property write access. - * - * @param string $propertyName Name of the property. - * @param mixed $propertyValue The value for the property. - * - * @throws ezcBasePropertyNotFoundException - * If a the value for the property options is not an instance of - * @throws ezcBaseValueException - * If a the value for a property is out of range. - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "pattern": - if ( is_string( $propertyValue ) === false || strlen( $propertyValue ) < 2 ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "string, length > 1" ); - } - break; - case "default": - if ( is_scalar( $propertyValue ) === false && $propertyValue !== null ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "scalar" ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property. - * @return bool True is the property is set, otherwise false. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_type.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_type.php deleted file mode 100644 index 32db2c8..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog/validators/question_dialog_type.php +++ /dev/null @@ -1,227 +0,0 @@ - self::TYPE_STRING, - "default" => null, - ); - - /** - * Creates a new question dialog type validator. - * Creates a new question dialog type validator, which validates the result - * specified to be of a certaon type. The $type must be one of the TYPE_* - * constants in this class. If no value is provided by the user a possibly - * set $default value is used instead. - * - * @param int $type One of ezcConsoleQuestionDialogTypeValidator::TYPE_*. - * @param mixed $default Default value according to $type. - * @return void - */ - public function __construct( $type = self::TYPE_STRING, $default = null ) - { - $this->type = $type; - $this->default = $default; - } - - /** - * Returns if the given result is valid. - * Returns if the result is of the given type. - * - * @param mixed $result The result to check. - * @return bool True if the result is valid. Otherwise false. - */ - public function validate( $result ) - { - if ( $result === "" ) - { - return $this->default !== null; - } - switch ( $this->type ) - { - case self::TYPE_INT: - return is_int( $result ); - case self::TYPE_FLOAT: - return is_float( $result ); - case self::TYPE_BOOL: - return is_bool( $result ); - case self::TYPE_STRING: - default: - return is_string( $result ); - } - } - - /** - * Returns a fixed version of the result, if possible. - * Returns the value casted into the correct type or the default value, if - * it exists and the result is empty. - * - * @param mixed $result The result received. - * @return mixed The manipulated result. - */ - public function fixup( $result ) - { - if ( $result === "" && $this->default !== null ) - { - return $this->default; - } - switch ( $this->type ) - { - case self::TYPE_INT: - return ( preg_match( "/^[0-9\-]+$/", $result ) !== 0 ) ? (int) $result : $result; - case self::TYPE_FLOAT: - return ( preg_match( "/^[0-9.E\-]+$/i", $result ) !== 0 ) ? (float) $result : $result; - case self::TYPE_BOOL: - switch ( $result ) - { - case "1": - case "true": - return true; - case "0": - case "false": - return false; - } - case self::TYPE_STRING: - default: - return $result; - } - } - - /** - * Returns a string representing valid results. - * Returns the string that can will be displayed with the question to - * indicate valid results to the user and a possibly set default, if - * available. - * - * @return string - */ - public function getResultString() - { - $res = "(<%s>)" . ( $this->default !== null ? " [{$this->default}]" : "" ); - switch ( $this->type ) - { - case self::TYPE_INT: - return sprintf( $res, "int" ); - case self::TYPE_FLOAT: - return sprintf( $res, "float" ); - case self::TYPE_BOOL: - return sprintf( $res, "bool" ); - case self::TYPE_STRING: - default: - return sprintf( $res, "string" ); - } - } - - /** - * Property read access. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * @ignore - */ - public function __get( $propertyName ) - { - if ( isset( $this->$propertyName ) ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Property write access. - * - * @param string $propertyName Name of the property. - * @param mixed $propertyValue The value for the property. - * - * @throws ezcBasePropertyNotFoundException - * If a the value for the property options is not an instance of - * @throws ezcBaseValueException - * If a the value for a property is out of range. - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "type": - if ( $propertyValue !== self::TYPE_STRING && $propertyValue !== self::TYPE_INT && $propertyValue !== self::TYPE_FLOAT && $propertyValue !== self::TYPE_BOOL ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "ezcConsoleQuestionDialogTypeValidator::TYPE_*" ); - } - break; - case "default": - if ( is_scalar( $propertyValue ) === false && $propertyValue !== null ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "scalar" ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property. - * @return bool True is the property is set, otherwise false. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog_viewer.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog_viewer.php deleted file mode 100644 index 8bb6a55..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/dialog_viewer.php +++ /dev/null @@ -1,68 +0,0 @@ - - * // Instatiate dialog in $dialog ... - * ezcConsoleDialogViewer::displayDialog( $dialog ); - * - * - * For implementing a custom dialog, the method {@link readLine()} method can be - * used to read a line of input from the user. - * - * @package ConsoleTools - * @version //autogen// - */ -class ezcConsoleDialogViewer -{ - /** - * Displays a dialog and returns a valid result from it. - * This methods displays a dialog in a loop, until it received a valid - * result from it and returns this result. - * - * @param ezcConsoleDialog $dialog The dialog to display. - * @return mixed The result from this dialog. - */ - public static function displayDialog( ezcConsoleDialog $dialog ) - { - do - { - $dialog->display(); - } - while ( $dialog->hasValidResult() === false ); - return $dialog->getResult(); - } - - /** - * Returns a line from STDIN. - * The returned line is fully trimmed. - * - * @return string - * @throws ezcConsoleDialogAbortException - * if the user closes STDIN using -D. - */ - public static function readLine() - { - $res = trim( fgets( STDIN ) ); - if ( feof( STDIN ) ) - { - throw new ezcConsoleDialogAbortException(); - } - return $res; - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument.php deleted file mode 100644 index 7184a1b..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument.php +++ /dev/null @@ -1,23 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_already_registered.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_already_registered.php deleted file mode 100644 index d7d4cf5..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_already_registered.php +++ /dev/null @@ -1,54 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_mandatory_violation.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_mandatory_violation.php deleted file mode 100644 index 051cd06..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_mandatory_violation.php +++ /dev/null @@ -1,33 +0,0 @@ -name}' is mandatory but was not submitted." ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_too_many.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_too_many.php deleted file mode 100644 index 2beaca2..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_too_many.php +++ /dev/null @@ -1,33 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_type_violation.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_type_violation.php deleted file mode 100644 index 68e92e8..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/argument_type_violation.php +++ /dev/null @@ -1,40 +0,0 @@ -type ) - { - case ezcConsoleInput::TYPE_INT: - $typeName = 'int'; - break; - } - parent::__construct( "The argument '{$arg->name}' expects a value of type '{$typeName}', but received the value '{$value}'." ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/dialog_abort.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/dialog_abort.php deleted file mode 100644 index 4687ae6..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/dialog_abort.php +++ /dev/null @@ -1,30 +0,0 @@ --D to a dialog instead of a valid answer. - * - * @package ConsoleTools - * @version //autogen// - */ -class ezcConsoleDialogAbortException extends ezcConsoleException -{ - /** - * Creates a new exception object. - * - * @param string $name Name of the already existing option. - * @return void - */ - public function __construct() - { - parent::__construct( "User send EOF." ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/exception.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/exception.php deleted file mode 100644 index 40646f0..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/exception.php +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_option_name.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_option_name.php deleted file mode 100644 index 90c31c6..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_option_name.php +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_output_target.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_output_target.php deleted file mode 100644 index 564ca96..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/invalid_output_target.php +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_position_stored.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_position_stored.php deleted file mode 100644 index 30519a1..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_position_stored.php +++ /dev/null @@ -1,30 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_valid_dialog_result.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_valid_dialog_result.php deleted file mode 100644 index cbd6865..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/no_valid_dialog_result.php +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option.php deleted file mode 100644 index 912f03f..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option.php +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_already_registered.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_already_registered.php deleted file mode 100644 index 513e325..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_already_registered.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_arguments_violation.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_arguments_violation.php deleted file mode 100644 index 61400ad..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_arguments_violation.php +++ /dev/null @@ -1,32 +0,0 @@ -long}' excludes the usage of arguments, but arguments have been submitted." ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_dependency_violation.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_dependency_violation.php deleted file mode 100644 index 052d35a..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_dependency_violation.php +++ /dev/null @@ -1,39 +0,0 @@ -long}' depends on the option '{$dependantOption->long}' "; - if ( $valueRange !== null ) - { - $message .= " to have a value in '{$valueRange}' "; - } - $message .= "but this one was not submitted."; - parent::__construct( $message ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_exclusion_violation.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_exclusion_violation.php deleted file mode 100644 index 0deac75..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_exclusion_violation.php +++ /dev/null @@ -1,39 +0,0 @@ -long}' excludes the option '{$excludedOption->long}'"; - if ( $valueRange !== null ) - { - $message .= " to have a value in '{$valueRange}'"; - } - $message .= " but this one was submitted."; - parent::__construct( $message ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_mandatory_violation.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_mandatory_violation.php deleted file mode 100644 index 3ac0289..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_mandatory_violation.php +++ /dev/null @@ -1,32 +0,0 @@ -long}' is mandatory but was not submitted." ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_missing_value.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_missing_value.php deleted file mode 100644 index fe7cf5d..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_missing_value.php +++ /dev/null @@ -1,32 +0,0 @@ -long}' expects a value, but none was submitted." ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_no_alias.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_no_alias.php deleted file mode 100644 index 8c7e751..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_no_alias.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_not_exists.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_not_exists.php deleted file mode 100644 index e5c5017..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_not_exists.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_string_not_wellformed.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_string_not_wellformed.php deleted file mode 100644 index 9b76626..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_string_not_wellformed.php +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_too_many_values.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_too_many_values.php deleted file mode 100644 index 1967940..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_too_many_values.php +++ /dev/null @@ -1,32 +0,0 @@ -long}' expects a single value, but multiple were submitted." ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_type_violation.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_type_violation.php deleted file mode 100644 index 680d64e..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/exceptions/option_type_violation.php +++ /dev/null @@ -1,42 +0,0 @@ -type ) - { - case ezcConsoleInput::TYPE_NONE: - $typeName = 'none'; - break; - case ezcConsoleInput::TYPE_INT: - $typeName = 'int'; - break; - } - parent::__construct( "The option '{$option->long}' expects a value of type '{$typeName}', but received the value '{$value}'." ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input.php deleted file mode 100644 index cdd3bc3..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input.php +++ /dev/null @@ -1,1396 +0,0 @@ - - * $optionHandler = new ezcConsoleInput(); - * - * // Register simple parameter -h/--help - * $optionHandler->registerOption( new ezcConsoleOption( 'h', 'help' ) ); - * - * // Register complex parameter -f/--file - * $file = new ezcConsoleOption( - * 'f', - * 'file', - * ezcConsoleInput::TYPE_STRING, - * null, - * false, - * 'Process a file.', - * 'Processes a single file.' - * ); - * $optionHandler->registerOption( $file ); - * - * // Manipulate parameter -f/--file after registration - * $file->multiple = true; - * - * // Register another complex parameter that depends on -f and excludes -h - * $dir = new ezcConsoleOption( - * 'd', - * 'dir', - * ezcConsoleInput::TYPE_STRING, - * null, - * true, - * 'Process a directory.', - * 'Processes a complete directory.', - * array( new ezcConsoleOptionRule( $optionHandler->getOption( 'f' ) ) ), - * array( new ezcConsoleOptionRule( $optionHandler->getOption( 'h' ) ) ) - * ); - * $optionHandler->registerOption( $dir ); - * - * // Register an alias for this parameter - * $optionHandler->registerAlias( 'e', 'extended-dir', $dir ); - * - * // Process registered parameters and handle errors - * try - * { - * $optionHandler->process( array( 'example_input.php', '-h' ) ); - * } - * catch ( ezcConsoleOptionException $e ) - * { - * echo $e->getMessage(); - * exit( 1 ); - * } - * - * // Process a single parameter - * $file = $optionHandler->getOption( 'f' ); - * if ( $file->value === false ) - * { - * echo "Parameter -{$file->short}/--{$file->long} was not submitted.\n"; - * } - * elseif ( $file->value === true ) - * { - * echo "Parameter -{$file->short}/--{$file->long} was submitted without value.\n"; - * } - * else - * { - * echo "Parameter -{$file->short}/--{$file->long} was submitted with value '".var_export($file->value, true)."'.\n"; - * } - * - * // Process all parameters at once: - * foreach ( $optionHandler->getOptionValues() as $paramShort => $val ) - * { - * switch ( true ) - * { - * case $val === false: - * echo "Parameter $paramShort was not submitted.\n"; - * break; - * case $val === true: - * echo "Parameter $paramShort was submitted without a value.\n"; - * break; - * case is_array( $val ): - * echo "Parameter $paramShort was submitted multiple times with value: '".implode(', ', $val)."'.\n"; - * break; - * default: - * echo "Parameter $paramShort was submitted with value: '$val'.\n"; - * break; - * } - * } - * - * - * @package ConsoleTools - * @version //autogen// - * @mainclass - * - * @property ezcConsoleArguments $argumentDefinition Optional argument definition. - */ -class ezcConsoleInput -{ - /** - * Option does not carry a value. - */ - const TYPE_NONE = 1; - - /** - * Option takes an integer value. - */ - const TYPE_INT = 2; - - /** - * Option takes a string value. - */ - const TYPE_STRING = 3; - - /** - * Array of option definitions, indexed by number. - * - * This array stores the ezcConsoleOption objects representing - * the options. - * - * For lookup of an option after its short or long values the attributes - * {@link ezcConsoleInput::$optionShort} - * {@link ezcConsoleInput::$optionLong} - * are used. - * - * @var array(array) - */ - private $options = array(); - - /** - * Short option names. - * - * Each references a key in {@link ezcConsoleInput::$options}. - * - * @var array(string=>int) - */ - private $optionShort = array(); - - /** - * Long option names. - * - * Each references a key in {@link ezcConsoleInput::$options}. - * - * @var array(string=>int) - */ - private $optionLong = array(); - - /** - * Arguments, if submitted, are stored here. - * - * @var array(string) - */ - private $arguments = array(); - - /** - * Wether the process() method has already been called. - * - * @var bool - */ - private $processed = false; - - /** - * Indicates if an option was submitted, that has the isHelpOption flag set. - * - * @var bool - */ - private $helpOptionSet = false; - - /** - * Tool object for multi-byte encoding safe string operations. - * - * @var ezcConsoleStringTool - */ - private $stringTool; - - /** - * Input validator. - * - * @var ezcConsoleInputValidator - */ - private $validator; - - /** - * Help generator. - * - * @var ezcConsoleInputHelpGenerator - */ - private $helpGenerator; - - /** - * Collection of properties. - * - * @var array(string=>mixed) - */ - protected $properties = array(); - - /** - * Creates an input handler. - */ - public function __construct() - { - $this->argumentDefinition = null; - $this->stringTool = new ezcConsoleStringTool(); - - // @TODO Verify interface and make plugable - $this->validator = new ezcConsoleStandardInputValidator(); - $this->helpGenerator = new ezcConsoleInputStandardHelpGenerator( $this ); - } - - /** - * Registers the new option $option. - * - * This method adds the new option $option to your option collection. If - * already an option with the assigned short or long value exists, an - * exception will be thrown. - * - * @see ezcConsoleInput::unregisterOption() - * - * @param ezcConsoleOption $option - * - * @return ezcConsoleOption The recently registered option. - */ - public function registerOption( ezcConsoleOption $option ) - { - foreach ( $this->optionShort as $short => $ref ) - { - if ( $short === $option->short ) - { - throw new ezcConsoleOptionAlreadyRegisteredException( $short ); - } - } - foreach ( $this->optionLong as $long => $ref ) - { - if ( $long === $option->long ) - { - throw new ezcConsoleOptionAlreadyRegisteredException( $long ); - } - } - $this->options[] = $option; - $this->optionLong[$option->long] = $option; - if ( $option->short !== "" ) - { - $this->optionShort[$option->short] = $option; - } - return $option; - } - - /** - * Registers an alias for an option. - * - * Registers a new alias for an existing option. Aliases can - * be used as if they were a normal option. - * - * The alias is registered with the short option name $short and the - * long option name $long. The alias references to the existing - * option $option. - * - * @see ezcConsoleInput::unregisterAlias() - * - * @param string $short - * @param string $long - * @param ezcConsoleOption $option - * - * - * @throws ezcConsoleOptionNotExistsException - * If the referenced option is not registered. - * @throws ezcConsoleOptionAlreadyRegisteredException - * If another option/alias has taken the provided short or long name. - * @return void - */ - public function registerAlias( $short, $long, ezcConsoleOption $option ) - { - if ( !isset( $this->optionShort[$option->short] ) || !isset( $this->optionLong[$option->long] ) ) - { - throw new ezcConsoleOptionNotExistsException( $option->long ); - } - if ( isset( $this->optionShort[$short] ) || isset( $this->optionLong[$long] ) ) - { - throw new ezcConsoleOptionAlreadyRegisteredException( isset( $this->optionShort[$short] ) ? "-$short" : "--$long" ); - } - $this->optionShort[$short] = $option; - $this->optionLong[$long] = $option; - } - - /** - * Registers options according to a string specification. - * - * Accepts a string to define parameters and registers all parameters as - * options accordingly. String definition, specified in $optionDef, looks - * like this: - * - * - * [s:|size:][u:|user:][a:|all:] - * - * - * This string registers 3 parameters: - * -s / --size - * -u / --user - * -a / --all - * - * @param string $optionDef - * @return void - * - * @throws ezcConsoleOptionStringNotWellformedException - * If provided string does not have the correct format. - */ - public function registerOptionString( $optionDef ) - { - $regex = '\[([a-z0-9-]+)([:?*+])?([^|]*)\|([a-z0-9-]+)([:?*+])?\]'; - // Check string for wellformedness - if ( preg_match( "/^($regex)+$/", $optionDef ) == 0 ) - { - throw new ezcConsoleOptionStringNotWellformedException( "Option definition not wellformed: \"$optionDef\"" ); - } - if ( preg_match_all( "/$regex/", $optionDef, $matches ) ) - { - foreach ( $matches[1] as $id => $short ) - { - $option = null; - $option = new ezcConsoleOption( $short, $matches[4][$id] ); - if ( !empty( $matches[2][$id] ) || !empty( $matches[5][$id] ) ) - { - switch ( !empty( $matches[2][$id] ) ? $matches[2][$id] : $matches[5][$id] ) - { - case '*': - // Allows 0 or more occurances - $option->multiple = true; - break; - case '+': - // Allows 1 or more occurances - $option->multiple = true; - $option->type = self::TYPE_STRING; - break; - case '?': - $option->type = self::TYPE_STRING; - $option->default = ''; - break; - default: - break; - } - } - if ( !empty( $matches[3][$id] ) ) - { - $option->default = $matches[3][$id]; - } - $this->registerOption( $option ); - } - } - } - - /** - * Removes an option. - * - * This function removes an option. All dependencies to that - * specific option are removed completely from every other registered - * option. - * - * @see ezcConsoleInput::registerOption() - * - * @param ezcConsoleOption $option The option object to unregister. - * - * @throws ezcConsoleOptionNotExistsException - * If requesting a not registered option. - * @return void - */ - public function unregisterOption( ezcConsoleOption $option ) - { - $found = false; - foreach ( $this->options as $id => $existParam ) - { - if ( $existParam === $option ) - { - $found = true; - unset( $this->options[$id] ); - continue; - } - $existParam->removeAllExclusions( $option ); - $existParam->removeAllDependencies( $option ); - } - if ( $found === false ) - { - throw new ezcConsoleOptionNotExistsException( $option->long ); - } - foreach ( $this->optionLong as $name => $existParam ) - { - if ( $existParam === $option ) - { - unset( $this->optionLong[$name] ); - } - } - foreach ( $this->optionShort as $name => $existParam ) - { - if ( $existParam === $option ) - { - unset( $this->optionShort[$name] ); - } - } - } - - /** - * Removes an alias to an option. - * - * This function removes an alias with the short name $short and long - * name $long. - * - * @see ezcConsoleInput::registerAlias() - * - * @throws ezcConsoleOptionNoAliasException - * If the requested short/long name belongs to a real parameter instead. - * - * @param string $short - * @param string $long - * @return void - * - * @todo Check if $short and $long refer to the same option! - */ - public function unregisterAlias( $short, $long ) - { - foreach ( $this->options as $id => $option ) - { - if ( $option->short === $short ) - { - throw new ezcConsoleOptionNoAliasException( $short ); - } - if ( $option->long === $long ) - { - throw new ezcConsoleOptionNoAliasException( $long ); - } - } - if ( isset( $this->optionShort[$short] ) ) - { - unset( $this->optionShort[$short] ); - } - if ( isset( $this->optionLong[$long] ) ) - { - unset( $this->optionLong[$long] ); - } - } - - /** - * Returns the definition object for the option with the name $name. - * - * This method receives the long or short name of an option and - * returns the ezcConsoleOption object. - * - * @param string $name Short or long name of the option (without - or --). - * @return ezcConsoleOption - * - * @throws ezcConsoleOptionNotExistsException - * If requesting a not registered parameter. - */ - public function getOption( $name ) - { - $name = $name; - if ( isset( $this->optionShort[$name] ) ) - { - return $this->optionShort[$name]; - } - if ( isset( $this->optionLong[$name] ) ) - { - return $this->optionLong[$name]; - } - throw new ezcConsoleOptionNotExistsException( $name ); - } - - /** - * Process the input parameters. - * - * Actually process the input options and arguments according to the actual - * settings. - * - * Per default this method uses $argc and $argv for processing. You can - * override this setting with your own input, if necessary, using the - * parameters of this method. (Attention, first argument is always the pro - * gram name itself!) - * - * All exceptions thrown by this method contain an additional attribute "option" - * which specifies the parameter on which the error occurred. - * - * @param array(string) $args The arguments - * @return void - * - * @throws ezcConsoleOptionNotExistsException - * If an option that was submitted does not exist. - * @throws ezcConsoleOptionDependencyViolationException - * If a dependency rule was violated. - * @throws ezcConsoleOptionExclusionViolationException - * If an exclusion rule was violated. - * @throws ezcConsoleOptionTypeViolationException - * If the type of a submitted value violates the options type rule. - * @throws ezcConsoleOptionArgumentsViolationException - * If arguments are passed although a parameter disallowed them. - * - * @see ezcConsoleOptionException - */ - public function process( array $args = null ) - { - if ( $this->processed ) - { - $this->reset(); - } - $this->processed = true; - - if ( !isset( $args ) ) - { - $args = isset( $argv ) ? $argv : isset( $_SERVER['argv'] ) ? $_SERVER['argv'] : array(); - } - - $nextIndex = $this->processOptions( $args ); - - if ( $this->helpOptionSet() ) - { - // No need to parse arguments - return; - } - - $this->processArguments( $args, $nextIndex ); - - $this->checkRules(); - - $this->setOptionDefaults(); - } - - /** - * Sets defaults for options that have not been submitted. - * - * Checks all options if they have been submited. If not and a default - * values is present, this is set as the options value. - */ - private function setOptionDefaults() - { - foreach ( $this->options as $option ) - { - if ( $option->value === false || $option->value === array() ) - { - // Default value to set? - if ( $option->default !== null ) - { - $option->value = $option->default; - } - } - } - } - - /** - * Reads the submitted options from $args array. - * - * Returns the next index to check for arguments. - * - * @param array(string) $args - * @returns int - * - * @throws ezcConsoleOptionNotExistsException - * if a submitted option does not exist. - * @throws ezcConsoleOptionTooManyValuesException - * if an option that expects only a single value was submitted - * with multiple values. - * @throws ezcConsoleOptionTypeViolationException - * if an option was submitted with a value of the wrong type. - * @throws ezcConsoleOptionMissingValueException - * if an option thats expects a value was submitted without. - */ - private function processOptions( array $args ) - { - $numArgs = count( $args ); - $i = 1; - - while ( $i < $numArgs ) - { - if ( $args[$i] === '--' ) - { - break; - } - - // Equalize parameter handling (long params with =) - if ( iconv_substr( $args[$i], 0, 2, 'UTF-8' ) == '--' ) - { - $this->preprocessLongOption( $args, $i ); - // Update number of args, changed by preprocessLongOption() - $numArgs = count( $args ); - } - - // Check for parameter - if ( iconv_substr( $args[$i], 0, 1, 'UTF-8' ) === '-' ) - { - if ( !$this->hasOption( preg_replace( '/^-*/', '', $args[$i] ) ) ) - { - throw new ezcConsoleOptionNotExistsException( $args[$i] ); - } - $this->processOption( $args, $i ); - } - // Must be the arguments - else - { - break; - } - } - - // Move pointer over argument sign - isset( $args[$i] ) && $args[$i] == '--' ? ++$i : $i; - - return $i; - } - - /** - * Resets all option and argument values. - * - * This method is called automatically by {@link process()}, if this method - * is called twice or more, and may also be used to manually reset the - * values of all registered {@ezcConsoleOption} and {@link - * ezcConsoleArgument} objects. - */ - public function reset() - { - foreach ( $this->options as $option ) - { - $option->value = false; - } - if ( $this->argumentDefinition !== null ) - { - foreach ( $this->argumentDefinition as $argument ) - { - $argument->value = null; - } - } - $this->arguments = array(); - } - - /** - * Returns true if an option with the given name exists, otherwise false. - * - * Checks if an option with the given name is registered. - * - * @param string $name Short or long name of the option. - * @return bool True if option exists, otherwise false. - */ - public function hasOption( $name ) - { - try - { - $param = $this->getOption( $name ); - } - catch ( ezcConsoleOptionNotExistsException $e ) - { - return false; - } - return true; - } - - /** - * Returns an array of all registered options. - * - * Returns an array of all registered options in the following format: - * - * array( - * 0 => ezcConsoleOption, - * 1 => ezcConsoleOption, - * 2 => ezcConsoleOption, - * ... - * ); - * - * - * @return array(string=>ezcConsoleOption) Registered options. - */ - public function getOptions() - { - return $this->options; - } - - /** - * Returns the values of all submitted options. - * - * Returns an array of all values submitted to the options. The array is - * indexed by the parameters short name (excluding the '-' prefix). The array - * does not contain any parameter, which value is 'false' (meaning: the - * parameter was not submitted). - * - * @param bool $longnames Wheather to use longnames for indexing. - * @return array(string=>mixed) - */ - public function getOptionValues( $longnames = false ) - { - $res = array(); - foreach ( $this->options as $param ) - { - if ( $param->value !== false ) - { - $res[( $longnames === true ) ? $param->long : $param->short] = $param->value; - } - } - return $res; - } - - /** - * Returns arguments provided to the program. - * - * This method returns all arguments provided to a program in an - * int indexed array. Arguments are sorted in the way - * they are submitted to the program. You can disable arguments - * through the 'arguments' flag of a parameter, if you want - * to disallow arguments. - * - * Arguments are either the last part of the program call (if the - * last parameter is not a 'multiple' one) or divided via the '--' - * method which is commonly used on Unix (if the last parameter - * accepts multiple values this is required). - * - * @return array(string) Arguments. - */ - public function getArguments() - { - return $this->arguments; - } - - /** - * Get help information for your options. - * - * This method returns an array of help information for your options, - * indexed by int. Each help info has 2 fields: - * - * 0 => The options names (" / ") - * 1 => The help text (depending on the $long parameter) - * - * The $long options determines if you want to get the short or long help - * texts. The array returned can be used by {@link ezcConsoleTable}. - * - * If using the second options, you can filter the options shown in the - * help output (e.g. to show short help for related options). Provide - * as simple number indexed array of short and/or long values to set a filter. - * - * The $paramGrouping option can be used to group options in the help - * output. The structure of this array parameter is as follows: - * - * - * array( - * 'First section' => array( - * 'input', - * 'output' - * 'overwrite', - * ), - * 'Second section' => array( - * 'v', - * 'h', - * ), - * ) - * - * - * As can be seen, short option names are possible as well as long ones. - * The key of the first array level is the name of the section, which is - * assigned to an array of options to group under this section. The $params - * parameter still influences if an option is displayed at all. - * - * @param bool $long - * @param array(string) $params - * @param array(string=>array(string)) $paramGrouping - * @return array(array(string)) Table structure as explained. - * - * @apichange In future versions, the default values of $params will change - * to null instead of an empty array. Giving an empty array for - * these will then be taken literally. - */ - public function getHelp( $long = false, array $params = array(), array $paramGrouping = null ) - { - // New handling - $params = ( $params === array() || $params === null ? null : $params ); - - $help = array(); - if ( $paramGrouping === null ) - { - // Original handling - $help = $this->getOptionHelpWithoutGrouping( $long, $params ); - } - else - { - $help = $this->getOptionHelpWithGrouping( $long, $params, $paramGrouping ); - } - - if ( $this->argumentDefinition !== null ) - { - $help[] = array( "Arguments:", '' ); - - $argumentsHelp = $this->helpGenerator->generateArgumentHelp( $long ); - if ( $argumentsHelp === array() ) - { - $help[] = array( '', "No arguments available." ); - } - else - { - $help = array_merge( $help, $argumentsHelp ); - } - } - - return $help; - } - - /** - * Creates the option help array in the original, ungrouped way. - * - * Creates the original help array generated by {@link getHelp()}. The - * $long and $params options are the same as they are for this method. - * - * @param bool $long - * @param array $params - * @return array - */ - private function getOptionHelpWithoutGrouping( $long, $params ) - { - return $this->helpGenerator->generateUngroupedOptionHelp( - $long, - $params - ); - } - - /** - * Generates options helo array with ordering and grouping. - * - * @param mixed $long - * @param mixed $params - * @param mixed $paramGrouping - * @return array() - */ - private function getOptionHelpWithGrouping( $long, $params, $paramGrouping ) - { - $rawHelp = $this->helpGenerator->generateGroupedOptionHelp( - $paramGrouping, - $long, - $params - ); - - $help = array(); - $first = true; - foreach ( $rawHelp as $category => $optionsHelp ) - { - if ( !$first ) - { - $help[] = array( '', '' ); - } - else - { - $first = false; - } - - $help[] = array( $category, '' ); - $help = array_merge( $help, $optionsHelp ); - } - return $help; - } - - - /** - * Get help information for your options as a table. - * - * This method provides the information returned by - * {@link ezcConsoleInput::getHelp()} in a table. - * - * The $paramGrouping option can be used to group options in the help - * output. The structure of this array parameter is as follows: - * - * - * array( - * 'First section' => array( - * 'input', - * 'output' - * 'overwrite', - * ), - * 'Second section' => array( - * 'v', - * 'h', - * ), - * ) - * - * - * As can be seen, short option names are possible as well as long ones. - * The key of the first array level is the name of the section, which is - * assigned to an array of options to group under this section. The $params - * parameter still influences if an option as displayed at all. - * - * @param ezcConsoleTable $table The table object to fill. - * @param bool $long Set this to true for getting the - * long help version. - * @param array(string) $params Set of option names to generate help - * for, default is all. - * @param array(string=>array(string)) $paramGrouping - * @return ezcConsoleTable The filled table. - */ - public function getHelpTable( ezcConsoleTable $table, $long = false, array $params = array(), $paramGrouping = null ) - { - $help = $this->getHelp( $long, $params, $paramGrouping ); - $i = 0; - foreach ( $help as $row ) - { - $table[$i][0]->content = $row[0]; - $table[$i++][1]->content = $row[1]; - } - return $table; - } - - /** - * Returns a standard help output for your program. - * - * This method generates a help text as it's commonly known from Unix - * command line programs. The output will contain the synopsis, your - * provided program description and the selected parameter help - * as also provided by {@link ezcConsoleInput::getHelp()}. The returned - * string can directly be printed to the console. - * - * The $paramGrouping option can be used to group options in the help - * output. The structure of this array parameter is as follows: - * - * - * array( - * 'First section' => array( - * 'input', - * 'output' - * 'overwrite', - * ), - * 'Second section' => array( - * 'v', - * 'h', - * ), - * ) - * - * - * As can be seen, short option names are possible as well as long ones. - * The key of the first array level is the name of the section, which is - * assigned to an array of options to group under this section. The $params - * parameter still influences if an option as displayed at all. - * - * @param string $programDesc The description of your program. - * @param int $width The width to adjust the output text to. - * @param bool $long Set this to true for getting the long - * help version. - * @param array(string) $params Set of option names to generate help - * for, default is all. - * @param array(string=>array(string)) $paramGrouping - * @return string The generated help text. - */ - public function getHelpText( $programDesc, $width = 80, $long = false, array $params = null, $paramGrouping = null ) - { - $help = $this->getHelp( $long, ( $params == null ? array() : $params ), $paramGrouping ); - - // Determine max length of first column text. - $maxLength = 0; - foreach ( $help as $row ) - { - $maxLength = max( $maxLength, iconv_strlen( $row[0], 'UTF-8' ) ); - } - - // Width of left column - $leftColWidth = $maxLength + 2; - // Width of righ column - $rightColWidth = $width - $leftColWidth; - - $res = 'Usage: ' . $this->getSynopsis( $params ) . PHP_EOL; - $res .= $this->stringTool->wordwrap( $programDesc, $width, PHP_EOL ); - $res .= PHP_EOL . PHP_EOL; - foreach ( $help as $row ) - { - $rowParts = explode( - "\n", - $this->stringTool->wordwrap( $row[1], $rightColWidth ) - ); - - $res .= $this->stringTool->strPad( $row[0], $leftColWidth, ' ' ); - $res .= $rowParts[0] . PHP_EOL; - // @TODO: Fix function call in loop header - for ( $i = 1; $i < sizeof( $rowParts ); $i++ ) - { - $res .= str_repeat( ' ', $leftColWidth ) . $rowParts[$i] . PHP_EOL; - } - } - return $res; - } - - /** - * Returns the synopsis string for the program. - * - * This gives you a synopsis definition for the options and arguments - * defined with this instance of ezcConsoleInput. You can filter the - * options named in the synopsis by submitting their short names in an - * array as the parameter of this method. If the parameter $optionNames - * is set, only those options are listed in the synopsis. - * - * @param array(string) $optionNames - * @return string - */ - public function getSynopsis( array $optionNames = null ) - { - return $this->helpGenerator->generateSynopsis( $optionNames ); - } - - /** - * Returns if a help option was set. - * This method returns if an option was submitted, which was defined to be - * a help option, using the isHelpOption flag. - * - * @return bool If a help option was set. - */ - public function helpOptionSet() - { - return $this->helpOptionSet; - } - - /** - * Property read access. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * @ignore - */ - public function __get( $propertyName ) - { - if ( !isset( $this->$propertyName ) ) - { - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - return $this->properties[$propertyName]; - } - - /** - * Property set access. - * - * @param string $propertyName - * @param string $propertyValue - * @ignore - * @return void - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "argumentDefinition": - if ( ( $propertyValue instanceof ezcConsoleArguments ) === false && $propertyValue !== null ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "ezcConsoleArguments" ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property. - * @return bool True if the property is set, otherwise false. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } - - /** - * Returns the synopsis string for a single option and its dependencies. - * - * This method returns a part of the program synopsis, specifically for a - * certain parameter. The method recursively adds depending parameters up - * to the 2nd depth level to the synopsis. The second parameter is used - * to store the short names of all options that have already been used in - * the synopsis (to avoid adding an option twice). The 3rd parameter - * determines the actual deps in the option dependency recursion to - * terminate that after 2 recursions. - * - * @param ezcConsoleOption $option The option to include. - * @param array(string) $usedOptions Array of used option short names. - * @param int $depth Current recursion depth. - * @return string The synopsis for this parameter. - * - * @apichange This method is deprecates. Implement your own {@link - * ezcConsoleInputHelpGenerator} instead, as soon as the - * interface is made public. - */ - protected function createOptionSynopsis( ezcConsoleOption $option, &$usedOptions, $depth = 0 ) - { - $synopsis = ''; - - // Break after a nesting level of 2 - if ( $depth++ > 2 || ( in_array( $option->short, $usedOptions['short'] ) && in_array( $option->long, $usedOptions['long'] ) ) ) return $synopsis; - - $usedOptions['short'][] = $option->short; - $usedOptions['long'][] = $option->long; - - $synopsis .= $option->short !== "" ? "-{$option->short}" : "--{$option->long}"; - - if ( isset( $option->default ) ) - { - $synopsis .= " " . ( $option->type === ezcConsoleInput::TYPE_STRING ? '"' : '' ) . $option->default . ( $option->type === ezcConsoleInput::TYPE_STRING ? '"' : '' ); - } - else if ( $option->type !== ezcConsoleInput::TYPE_NONE ) - { - $synopsis .= " "; - switch ( $option->type ) - { - case ezcConsoleInput::TYPE_STRING: - $synopsis .= ""; - break; - case ezcConsoleInput::TYPE_INT: - $synopsis .= ""; - break; - } - } - - foreach ( $option->getDependencies() as $rule ) - { - $deeperSynopsis = $this->createOptionSynopsis( $rule->option, $usedOptions, $depth ); - $synopsis .= ( iconv_strlen( trim( $deeperSynopsis ), 'UTF-8' ) > 0 - ? ' ' . $deeperSynopsis - : '' - ); - } - - if ( $option->arguments === false ) - { - $allowsArgs = false; - } - - // Make the whole thing optional? - if ( $option->mandatory === false ) - { - $synopsis = "[$synopsis]"; - } - - return $synopsis . ' '; - } - - /** - * Process an option. - * - * This method does the processing of a single option. - * - * @param array(string) $args The arguments array. - * @param int $i The current position in the arguments array. - * @return void - * - * @throws ezcConsoleOptionTooManyValuesException - * If an option that expects only a single value was submitted - * with multiple values. - * @throws ezcConsoleOptionTypeViolationException - * If an option was submitted with a value of the wrong type. - * @throws ezcConsoleOptionMissingValueException - * If an option thats expects a value was submitted without. - */ - private function processOption( array $args, &$i ) - { - $option = $this->getOption( preg_replace( '/^-+/', '', $args[$i++] ) ); - - // Is the actual option a help option? - if ( $option->isHelpOption === true ) - { - $this->helpOptionSet = true; - } - // No value expected - if ( $option->type === ezcConsoleInput::TYPE_NONE ) - { - // No value expected - if ( isset( $args[$i] ) && iconv_substr( $args[$i], 0, 1, 'UTF-8' ) !== '-' && sizeof( $args ) > ( $i + 1 ) ) - { - // But one found - throw new ezcConsoleOptionTypeViolationException( $option, $args[$i] ); - } - // Multiple occurance possible - if ( $option->multiple === true ) - { - $option->value[] = true; - } - else - { - $option->value = true; - } - // Everything fine, nothing to do - return $i; - } - // Value expected, check for it - if ( isset( $args[$i] ) && iconv_substr( $args[$i], 0, 1, 'UTF-8' ) !== '-' ) - { - // Type check - if ( $this->isCorrectType( $option->type, $args[$i] ) === false ) - { - throw new ezcConsoleOptionTypeViolationException( $option, $args[$i] ); - } - // Multiple values possible - if ( $option->multiple === true ) - { - $option->value[] = $args[$i]; - } - // Only single value expected, check for multiple - elseif ( isset( $option->value ) && $option->value !== false ) - { - throw new ezcConsoleOptionTooManyValuesException( $option ); - } - else - { - $option->value = $args[$i]; - } - $i++; - } - // Value found? If not, use default, if available - if ( !isset( $option->value ) || $option->value === false || ( is_array( $option->value ) && count( $option->value ) === 0) ) - { - throw new ezcConsoleOptionMissingValueException( $option ); - } - } - - /** - * Process arguments given to the program. - * - * @param array(string) $args The arguments array. - * @param int $i Current index in arguments array. - * @return void - */ - private function processArguments( array $args, &$i ) - { - $numArgs = count( $args ); - if ( $this->argumentDefinition === null || $this->argumentsAllowed() === false ) - { - // Old argument handling, also used of a set option sets disallowing arguments - while ( $i < $numArgs ) - { - $this->arguments[] = $args[$i++]; - } - } - else - { - $mandatory = true; - foreach ( $this->argumentDefinition as $arg ) - { - // Check if all followinga arguments are optional - if ( $arg->mandatory === false ) - { - $mandatory = false; - } - - // Check if the current argument is present and mandatory - if ( $mandatory === true ) - { - if ( !isset( $args[$i] ) ) - { - throw new ezcConsoleArgumentMandatoryViolationException( $arg ); - } - } - else - { - // Arguments are optional, if no more left: return. - if ( !isset( $args[$i] ) ) - { - // Optional and no more arguments left, assign default - $arg->value = $arg->default; - continue; - } - } - - if ( $arg->multiple === true ) - { - $arg->value = array(); - for ( $i = $i; $i < $numArgs; ++$i ) - { - if ( $this->isCorrectType( $arg->type, $args[$i] ) === false ) - { - throw new ezcConsoleArgumentTypeViolationException( $arg, $args[$i] ); - } - $arg->value = array_merge( $arg->value, array( $args[$i] ) ); - // Keep old handling, too - $this->arguments[] = $args[$i]; - } - return; - } - else - { - if ( $this->isCorrectType( $arg->type, $args[$i] ) === false ) - { - throw new ezcConsoleArgumentTypeViolationException( $arg, $args[$i] ); - } - $arg->value = $args[$i]; - // Keep old handling, too - $this->arguments[] = $args[$i]; - } - ++$i; - } - - if ( $i < $numArgs ) - { - throw new ezcConsoleTooManyArgumentsException( $args, $i ); - } - } - } - - /** - * Returns if arguments are allowed with the current option submition. - * - * @return bool If arguments allowed. - */ - protected function argumentsAllowed() - { - foreach ( $this->options as $id => $option ) - { - if ( $option->value !== false && $option->arguments === false ) - { - return false; - } - } - return true; - } - - /** - * Check the rules that may be associated with an option. - * - * Options are allowed to have rules associated for dependencies to other - * options and exclusion of other options or arguments. This method - * processes the checks. - * - * @throws ezcConsoleException - * in case validation fails. - */ - private function checkRules() - { - // If a help option is set, skip rule checking - if ( $this->helpOptionSet === true ) - { - return; - } - $this->validator->validateOptions( - $this->options, - ( $this->arguments !== array() ) - ); - } - - /** - * Checks if a value is of a given type. Converts the value to the - * correct PHP type on success. - * - * @param int $type The type to check for. One of self::TYPE_*. - * @param string $val The value to check. Will possibly altered! - * @return bool True on succesful check, otherwise false. - */ - private function isCorrectType( $type, &$val ) - { - $res = false; - switch ( $type ) - { - case ezcConsoleInput::TYPE_STRING: - $res = true; - $val = preg_replace( '/^(["\'])(.*)\1$/', '\2', $val ); - break; - case ezcConsoleInput::TYPE_INT: - $res = preg_match( '/^[0-9]+$/', $val ) ? true : false; - if ( $res ) - { - $val = ( int ) $val; - } - break; - } - return $res; - } - - /** - * Split parameter and value for long option names. - * - * This method checks for long options, if the value is passed using =. If - * this is the case parameter and value get split and replaced in the - * arguments array. - * - * @param array(string) $args The arguments array - * @param int $i Current arguments array position - * @return void - */ - private function preprocessLongOption( array &$args, $i ) - { - // Value given? - if ( preg_match( '/^--\w+\=[^ ]/i', $args[$i] ) ) - { - // Split param and value and replace current param - $parts = explode( '=', $args[$i], 2 ); - array_splice( $args, $i, 1, $parts ); - } - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/argument.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/argument.php deleted file mode 100644 index ef5bed9..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/argument.php +++ /dev/null @@ -1,180 +0,0 @@ - null, - "type" => ezcConsoleInput::TYPE_STRING, - "shorthelp" => "No help available.", - "longhelp" => "There is no help for this argument available.", - "mandatory" => true, - "multiple" => false, - "default" => null, - "value" => null, - ); - - /** - * Creates a new console argument object. - * Creates a new console argument object, which represents a single - * argument on the shell. Arguments are stored insiede - * {@link ezcConsoleArguments} which is used with {@link ezcConsoleInput}. - * - * For the type property see {@link ezcConsoleInput::TYPE_STRING} and - * {@link ezcConsoleInput::TYPE_INT}. If 1 argument is defined as optional - * ($mandatory = false), all following arguments are autolamtically - * considered optional, too. - * - * @param string $name The name for the argument. Must be unique. - * @param int $type The value type. - * @param string $shorthelp A short help text. - * @param string $longhelp A long help text- - * @param bool $mandatory Whether the argument is mandatory. - * @param bool $multiple Whether the argument accepts multiple values. - * @param mixed $default A default value, if not mandatory. - * @return void - */ - public function __construct( - $name = null, - $type = ezcConsoleInput::TYPE_STRING, - $shorthelp = "No help available.", - $longhelp = "There is no help for this argument available.", - $mandatory = true, - $multiple = false, - $default = null - ) - { - if ( !is_string( $name ) || strlen( $name ) < 1 ) - { - throw new ezcBaseValueException( "name", $name, "string, length > 0" ); - } - $this->properties["name"] = $name; - - $this->type = $type; - $this->shorthelp = $shorthelp; - $this->longhelp = $longhelp; - $this->mandatory = $mandatory; - $this->multiple = $multiple; - $this->default = $default; - } - - /** - * Property set access. - * - * @param string $propertyName Name of the property. - * @param string $propertyValue Valze for the property. - * @return void - * @ignore - */ - public function __set( $propertyName, $propertyValue ) - { - switch ( $propertyName ) - { - case "name": - throw new ezcBasePropertyPermissionException( $propertyName, ezcBasePropertyPermissionException::READ ); - break; - case "type": - if ( $propertyValue !== ezcConsoleInput::TYPE_INT && $propertyValue !== ezcConsoleInput::TYPE_STRING ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "string, length > 0" ); - } - break; - case "shorthelp": - case "longhelp": - if ( is_string( $propertyValue ) === false ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "string" ); - } - break; - case "mandatory": - case "multiple": - if ( is_bool( $propertyValue ) === false ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "bool" ); - } - break; - case "default": - if ( is_scalar( $propertyValue ) === false && is_array( $propertyValue ) === false && $propertyValue !== null ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "array, scalar or null" ); - } - break; - case "value": - if ( is_scalar( $propertyValue ) === false && is_array( $propertyValue ) === false && $propertyValue !== null ) - { - throw new ezcBaseValueException( $propertyName, $propertyValue, "string or null" ); - } - break; - default: - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - $this->properties[$propertyName] = $propertyValue; - } - - /** - * Property read access. - * - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * - * @param string $propertyName Name of the property. - * @return mixed Value of the property or null. - * @ignore - */ - public function __get( $propertyName ) - { - if ( isset( $this->$propertyName ) ) - { - return $this->properties[$propertyName]; - } - throw new ezcBasePropertyNotFoundException( $propertyName ); - } - - /** - * Property isset access. - * - * @param string $propertyName Name of the property. - * @return bool True is the property is set, otherwise false. - * @ignore - */ - public function __isset( $propertyName ) - { - return array_key_exists( $propertyName, $this->properties ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/arguments.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/arguments.php deleted file mode 100644 index d7548ea..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/arguments.php +++ /dev/null @@ -1,246 +0,0 @@ -ezcConsoleArgument) - */ - protected $named = array(); - - /** - * Returns if the given offset exists. - * This method is part of the ArrayAccess interface to allow access to the - * data of this object as if it was an array. Valid offsets are integers or - * strings. If an integer is used, it refers to the position in the command - * line. A string refers to the arguments name property. - * - * @param mixed $offset The offset to check. - * @return bool True when the offset exists, otherwise false. - * - * @throws ezcBaseValueException - * If the provided offset is neither an integer, nor a string. - */ - public function offsetExists( $offset ) - { - switch ( gettype( $offset ) ) - { - case "string": - return array_key_exists( $offset, $this->named ); - case "integer": - return array_key_exists( $offset, $this->ordered ); - default: - throw new ezcBaseValueException( "offset", $offset, "string or int" ); - } - } - - /** - * Returns the element with the given offset. - * This method is part of the ArrayAccess interface to allow access to the - * data of this object as if it was an array. Valid offsets are integers or - * strings. If an integer is used, it refers to the position in the command - * line. A string refers to the arguments name property. - * - * @param string|integer $offset The offset to check. - * @return ezcConsoleArgument - * - * @throws ezcBaseValueException - * If the provided offset is neither an integer, nor a string. - */ - public function offsetGet( $offset ) - { - switch ( gettype( $offset ) ) - { - case "string": - if ( isset( $this[$offset] ) ) - { - return $this->named[$offset]; - } - break; - case "integer": - if ( isset( $this[$offset] ) ) - { - return $this->ordered[$offset]; - } - break; - default: - throw new ezcBaseValueException( "offset", $offset, "string or int" ); - } - throw new ezcBasePropertyNotFoundException( $offset ); - } - - /** - * Set the element with the given offset. - * This method is part of the ArrayAccess interface to allow access to the - * data of this object as if it was an array. In contrast to the other - * ArrayAccess implementations of this class, this method allows only integer - * keys. - * - * @param int $offset The offset to assign an item to. - * @param ezcConsoleArgument $value The argument object to register. - * @return void - * - * @throws ezcBaseValueException - * If a non integer offset is provided. - * @throws ezcBaseValueException - * If the provided value is not of type {@ling ezcConsoleTableRow}. - * @throws ezcConsoleArgumentAlreadyRegisteredException - * If an argument with the given offset or name is already registered. - */ - public function offsetSet( $offset, $value ) - { - // Determine key if not set (using $obj[] = ...) - if ( $offset === null ) - { - $offset = count( $this->ordered ) === 0 ? 0 : max( array_keys( $this->ordered ) ) + 1; - } - - // Set access only allowed with integer values - if ( !is_int( $offset ) ) - { - throw new ezcBaseValueException( "offset", $offset, "int" ); - } - - switch ( true ) - { - case ( $value instanceof ezcConsoleArgument ): - if ( isset( $this->ordered[$offset] ) ) - { - throw new ezcConsoleArgumentAlreadyRegisteredException( $offset, ezcConsoleArgumentAlreadyRegisteredException::ORDERED ); - } - if ( isset( $this->named[$value->name] ) ) - { - throw new ezcConsoleArgumentAlreadyRegisteredException( $value->name, ezcConsoleArgumentAlreadyRegisteredException::NAMED ); - } - - $this->named[$value->name] = $value; - $this->ordered[$offset] = $value; - break; - case ( $value === null ): - // Aliasing unset() with assignement to null - unset( $this->named[$this->ordered[$offset]->name] ); - unset( $this->ordered[$offset] ); - break; - default: - throw new ezcBaseValueException( "value", $value, "ezcConsoleArgument or null" ); - } - } - - /** - * Unset the element with the given offset. - * This method is part of the ArrayAccess interface to allow access to the - * data of this object as if it was an array. In contrast to the other - * ArrayAccess implementations of this class, this method allows only integer - * keys. - * - * @param int $offset The offset to unset the value for. - * @return void - * - * @throws ezcBaseValueException - * If a non numeric row offset is used. - */ - public function offsetUnset( $offset ) - { - // Set access only allowed with integer values - if ( is_int( $offset ) === false ) - { - throw new ezcBaseValueException( "offset", $offset, "int" ); - } - - unset( $this->named[$this->ordered[$offset]->name] ); - unset( $this->ordered[$offset] ); - } - - /** - * Returns the currently selected argument from the list. - * Used by foreach-Loops. - * - * @return ezcConsoleArgument - */ - public function current() - { - return current( $this->ordered ); - } - - /** - * Returns the key of the currently selected argument from the list. - * Used by foreach-Loops. In contrast to the iteration direction, which is - * defined by the ordered list of arguments, this is the name of the - * argument. - * - * @return string - */ - public function key() - { - return key( $this->ordered ); - } - - /** - * Advances the internal pointer to the next argument and returns it. - * Used by foreach-Loops. - * - * @return ezcConsoleArgument - */ - public function next() - { - return next( $this->ordered ); - } - - /** - * Rewinds the internal pointer to the first argument and returns it. - * Used by foreach-Loops. - * - * @return ezcConsoleArgument - */ - public function rewind() - { - // Called before foreach - ksort( $this->ordered ); - return reset( $this->ordered ); - } - - /** - * Checks if the current position is valid. - * Used by foreach-Loops. - * - * @return bool - */ - public function valid() - { - return ( current( $this->ordered ) !== false ); - } - - /** - * Returns the number of registered arguments. - * - * @return int - */ - public function count() - { - return count( $this->ordered ); - } -} -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/help_generators/standard.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/help_generators/standard.php deleted file mode 100644 index b42948c..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/help_generators/standard.php +++ /dev/null @@ -1,391 +0,0 @@ -input = $input; - } - - /** - * Generates help information as a multidimensional array. - * - * This method generates a tabular view on the help information of a - * program. The returned array has the following structure: - * - * - * array( - * 0 => ' - * - * Each row of the array represents the help information for a single option. - * The first cell of a row contains the option name (maybe short, long or - * both), the second cell contains the help text of the option. - * - * The returned array is used by {@link ezcConsoleInput} for different - * purposes. - * For example, the user can retrieve it raw through the - * {@link ezcConsoleInput::getHelp()} method, he can generate a help - * {@link ezcConsoleTable} through {@link ezcConsoleInput::getHelpTable()} - * are can generate a printable help text through {@link - * ezcConsoleInput::getHelpText()}. - * - * The parameter $long defines if the long or short help text of the - * options should be used in the second cell of the returned array. The - * $optionsFilter parameter is used to restrict the generated help to a certain - * sub-set of options. It consists of an array of short or long names of - * the options to include. - * - * @param bool $long - * @param array(string) $optionsFilter - * @return array(array(string)) - */ - public function generateUngroupedOptionHelp( $long = false, array $optionsFilter = null ) - { - $help = array(); - foreach ( $this->input->getOptions() as $id => $param ) - { - if ( $optionsFilter === null || in_array( $param->short, $optionsFilter ) || in_array( $param->long, $optionsFilter ) ) - { - $help[] = $this->getOptionHelpRow( $long, $param ); - } - } - return $help; - } - - /** - * Generates help information as a multidimensional array, grouped in categories. - * - * This method behaves similar to {@link generateUngroupedOptionHelp()}. In - * contrast to the latter one, this method returns an array with 1 - * dimension more, grouping options into categories. The $groups parameter - * defines the categories to generate. Each category may contain an - * arbitrary number of options, options might occur in different - * categories. - * - * The returned array has the follorwing format: - * - * - * ' => array( - * 0 => array( - * 0 => ' - * - * The $long parameter, as in {@link generateUngroupedOptionHelp()} - * determines if the options short or long help is to be used. The - * $params array can in addition be used to determine if a parameter - * is displayed at all. If $optionsFilter is submitted and is not null, - * only options listed in it will be shown in the help at all. - * - * @param array(string=>array(string)) $groups - * @param bool $long - * @param array(string) $params - * @return array(string=>array(array(string))) - */ - public function generateGroupedOptionHelp( array $groups, $long = false, array $optionsFilter = null ) - { - $help = array(); - foreach ( $groups as $groupName => $groupOptions ) - { - foreach ( $groupOptions as $optionName ) - { - $option = $this->input->getOption( $optionName ); - if ( $optionsFilter === null || in_array( $option->short, $optionsFilter ) || in_array( $option->long, $optionsFilter ) ) - { - $help[$groupName][] = $this->getOptionHelpRow( - $long, - $option - ); - } - } - } - return $help; - } - - /** - * Generates help information as a multi-dimensonal array for the given $argumentDefinition. - * - * This method generates a tabular help information for the given - * $argumentDefinition in the following format: - * - * - * array( - * 0 => '', - * 1 => '' - * ), - * 1 => array( - * 0 => '', - * 1 => '' - * ), - * // ... - * ) - * ?> - * - * - * The $long parameter defines if the long of short help text should be - * used. - * - * @param bool $long - * @return array(array(string)) - */ - public function generateArgumentHelp( $long = false ) - { - $help = array(); - if ( $this->input->argumentDefinition !== null ) - { - foreach ( $this->input->argumentDefinition as $arg ) - { - $argSynopsis = "<%s:%s>"; - switch ( $arg->type ) - { - case ezcConsoleInput::TYPE_INT: - $type = "int"; - break; - case ezcConsoleInput::TYPE_STRING: - $type = "string"; - break; - } - $argSynopsis = sprintf( $argSynopsis, $type, $arg->name ); - $help[] = ( $long === true ) - ? array( - $argSynopsis, - $arg->longhelp . ( $arg->mandatory === false - ? ' (optional' . ( $arg->default !== null - ? ', default = ' . ( is_array( $arg->default ) - ? "'" . implode( "' '", $arg->default ) . "'" - : "'$arg->default'" - ) - : '' - ) . ')' - : '' - ) - ) - : array( $argSynopsis, $arg->shorthelp ); - } - } - return $help; - } - - /** - * Creates 1 text row for displaying options help. - * - * Returns a single array entry for the {@link getOptionHelpRow()} method. - * - * @param bool $long - * @param ezcConsoleOption $param - * @return string - */ - private function getOptionHelpRow( $long, ezcConsoleOption $param ) - { - return array( - ( $param->short !== "" ? '-' . $param->short . ' / ' : "" ) . '--' . $param->long, - $long == false ? $param->shorthelp : $param->longhelp, - ); - } - - /** - * Generates a command line synopsis for the options and arguments. - * - * This method generates a synopsis string that lists the options and - * parameters available, indicating their usage. If $optionsFilter is - * submitted, only the options named in this array (short or long variant) - * will be included in the synopsis. - * - * @param array(string) $optionsFilter - * @return string - */ - public function generateSynopsis( array $optionFilter = null ) - { - $usedOptions = array( 'short' => array(), 'long' => array() ); - $allowsArgs = true; - $synopsis = '$ ' . ( isset( $argv ) && sizeof( $argv ) > 0 ? $argv[0] : $_SERVER['argv'][0] ) . ' '; - foreach ( $this->input->getOptions() as $option ) - { - if ( $optionFilter === null || in_array( $option->short, $optionFilter ) || in_array( $option->long, $optionFilter ) ) - { - $synopsis .= $this->createOptionSynopsis( $option, $usedOptions, $allowsArgs ); - } - } - if ( $this->input->argumentDefinition === null ) - { - // Old handling - $synopsis .= " [[--] ]"; - } - else - { - $synopsis .= "[--] " . $this->createArgumentsSynopsis(); - } - return $synopsis; - } - - /** - * Returns the synopsis string for a single option and its dependencies. - * - * This method returns a part of the program synopsis, specifically for a - * certain parameter. The method recursively adds depending parameters up - * to the 2nd depth level to the synopsis. The second parameter is used - * to store the short names of all options that have already been used in - * the synopsis (to avoid adding an option twice). The 3rd parameter - * determines the actual deps in the option dependency recursion to - * terminate that after 2 recursions. - * - * @param ezcConsoleOption $option The option to include. - * @param array(string) $usedOptions Array of used option short names. - * @param int $depth Current recursion depth. - * @return string The synopsis for this parameter. - */ - private function createOptionSynopsis( ezcConsoleOption $option, &$usedOptions, $depth = 0 ) - { - $synopsis = ''; - - // Break after a nesting level of 2 - if ( $depth++ > 2 || ( in_array( $option->short, $usedOptions['short'] ) && in_array( $option->long, $usedOptions['long'] ) ) ) return $synopsis; - - $usedOptions['short'][] = $option->short; - $usedOptions['long'][] = $option->long; - - $synopsis .= $option->short !== "" ? "-{$option->short}" : "--{$option->long}"; - - if ( isset( $option->default ) ) - { - $synopsis .= " " . ( $option->type === ezcConsoleInput::TYPE_STRING ? '"' : '' ) . $option->default . ( $option->type === ezcConsoleInput::TYPE_STRING ? '"' : '' ); - } - else if ( $option->type !== ezcConsoleInput::TYPE_NONE ) - { - $synopsis .= " "; - switch ( $option->type ) - { - case ezcConsoleInput::TYPE_STRING: - $synopsis .= ""; - break; - case ezcConsoleInput::TYPE_INT: - $synopsis .= ""; - break; - } - } - - foreach ( $option->getDependencies() as $rule ) - { - $deeperSynopsis = $this->createOptionSynopsis( $rule->option, $usedOptions, $depth ); - $synopsis .= ( iconv_strlen( trim( $deeperSynopsis ), 'UTF-8' ) > 0 - ? ' ' . $deeperSynopsis - : '' - ); - } - - if ( $option->arguments === false ) - { - $allowsArgs = false; - } - - // Make the whole thing optional? - if ( $option->mandatory === false ) - { - $synopsis = "[$synopsis]"; - } - - return $synopsis . ' '; - } - - /** - * Generate synopsis for arguments. - * - * @return string The synopsis string. - */ - private function createArgumentsSynopsis() - { - $mandatory = true; - $synopsises = array(); - foreach ( $this->input->argumentDefinition as $arg ) - { - $argSynopsis = ""; - if ( $arg->mandatory === false ) - { - $mandatory = false; - } - $argSynopsis .= "<%s:%s>"; - switch ( $arg->type ) - { - case ezcConsoleInput::TYPE_INT: - $type = "int"; - break; - case ezcConsoleInput::TYPE_STRING: - $type = "string"; - break; - } - $argSynopsis = sprintf( $argSynopsis, $type, $arg->name ); - $synopsises[] = $mandatory === false ? "[$argSynopsis]" : $argSynopsis; - if ( $arg->multiple === true ) - { - $synopsises[] = "[$argSynopsis ...]"; - break; - } - } - return implode( " ", $synopsises ); - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/option.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/option.php deleted file mode 100644 index 384134e..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/option.php +++ /dev/null @@ -1,585 +0,0 @@ -mixed) - */ - protected $properties; - - /** - * Dependency rules of this parameter. - * - * @see ezcConsoleOption::addDependency() - * @see ezcConsoleOption::removeDependency() - * @see ezcConsoleOption::hasDependency() - * @see ezcConsoleOption::getDependencies() - * @see ezcConsoleOption::resetDependencies() - * - * @var array(string=>ezcConsoleParamemterRule) - */ - protected $dependencies = array(); - - /** - * Exclusion rules of this parameter. - * - * @see ezcConsoleOption::addExclusion() - * @see ezcConsoleOption::removeExclusion() - * @see ezcConsoleOption::hasExclusion() - * @see ezcConsoleOption::getExclusions() - * @see ezcConsoleOption::resetExclusions() - * - * @var array(string=>ezcConsoleParamemterRule) - */ - protected $exclusions = array(); - - /** - * The value the parameter was assigned to when being submitted. - * Boolean false indicates the parameter was not submitted, boolean - * true means the parameter was submitted, but did not have a value. - * In any other case, this caries the submitted value. - * - * @var mixed - */ - public $value = false; - - /** - * Create a new parameter struct. - * Creates a new basic parameter struct with the base information "$short" - * (the short name of the parameter) and "$long" (the long version). You - * simply apply these parameters as strings (without '-' or '--'). So - * - * - * $param = new ezcConsoleOption( 'f', 'file' ); - * - * - * will result in a parameter that can be accessed using - * - * - * $ mytool -f - * - * - * or - * - * - * $ mytool --file - * - * . - * - * The newly created parameter contains only it's 2 names and each other - * attribute is set to it's default value. You can simply manipulate - * those attributes by accessing them directly. - * - * @param string $short Short name of the parameter without '-' (eg. 'f'). - * @param string $long Long name of the parameter without '--' (eg. 'file'). - * @param int $type Value type of the parameter. One of ezcConsoleInput::TYPE_*. - * @param mixed $default Default value the parameter holds if not submitted. - * @param bool $multiple If the parameter may be submitted multiple times. - * @param string $shorthelp Short help text. - * @param string $longhelp Long help text. - * @param array(ezcConsoleOptionRule) $dependencies Dependency rules. - * @param array(ezcConsoleOptionRule) $exclusions Exclusion rules. - * @param bool $arguments Whether supplying arguments is allowed when this parameter is set. - * @param bool $mandatory Whether the parameter must be always submitted. - * @param bool $isHelpOption Indicates that the given parameter is a help - * option. If a help option is set, all rule - * checking is skipped (dependency/exclusion/ - * mandatory). - * - * @throws ezcConsoleInvalidOptionNameException If the option names start with a "-" - * sign or contain whitespaces. - */ - public function __construct( - $short = '', - $long, - $type = ezcConsoleInput::TYPE_NONE, - $default = null, - $multiple = false, - $shorthelp = 'No help available.', - $longhelp = 'Sorry, there is no help text available for this parameter.', - array $dependencies = array(), - array $exclusions = array(), - $arguments = true, - $mandatory = false, - $isHelpOption = false - ) - { - $this->properties['short'] = ''; - $this->properties['long'] = ''; - $this->properties['arguments'] = $arguments; - - if ( !self::validateOptionName( $short ) ) - { - throw new ezcConsoleInvalidOptionNameException( $short ); - } - $this->properties['short'] = $short; - - if ( !self::validateOptionName( $long ) ) - { - throw new ezcConsoleInvalidOptionNameException( $long ); - } - $this->properties['long'] = $long; - - $this->__set( "type", $type !== null ? $type : ezcConsoleInput::TYPE_NONE ); - $this->__set( "multiple", $multiple !== null ? $multiple : false ); - $this->__set( "default", $default !== null ? $default : null ); - $this->__set( "shorthelp", $shorthelp !== null ? $shorthelp : 'No help available.' ); - $this->__set( "longhelp", $longhelp !== null ? $longhelp : 'Sorry, there is no help text available for this parameter.' ); - - $dependencies = $dependencies !== null && is_array( $dependencies ) ? $dependencies : array(); - foreach ( $dependencies as $dep ) - { - $this->addDependency( $dep ); - } - - $exclusions = $exclusions !== null && is_array( $exclusions ) ? $exclusions : array(); - foreach ( $exclusions as $exc ) - { - $this->addExclusion( $exc ); - } - - $this->__set( "mandatory", $mandatory !== null ? $mandatory : false ); - $this->__set( "isHelpOption", $isHelpOption !== null ? $isHelpOption : false ); - } - - /** - * Add a new dependency for a parameter. - * This registeres a new dependency rule with the parameter. If you try - * to add an already registered rule it will simply be ignored. Else, - * the submitted rule will be added to the parameter as a dependency. - * - * @param ezcConsoleOptionRule $rule The rule to add. - * @return void - */ - public function addDependency( ezcConsoleOptionRule $rule ) - { - foreach ( $this->dependencies as $existRule ) - { - if ( $rule == $existRule ) - { - return; - } - } - $this->dependencies[] = $rule; - } - - /** - * Remove a dependency rule from a parameter. - * This removes a given rule from a parameter, if it exists. If the rule is - * not registered with the parameter, the method call will simply be ignored. - * - * @param ezcConsoleOptionRule $rule The rule to be removed. - * @return void - */ - public function removeDependency( ezcConsoleOptionRule $rule ) - { - foreach ( $this->dependencies as $id => $existRule ) - { - if ( $rule == $existRule ) - { - unset( $this->dependencies[$id] ); - } - } - } - - /** - * Remove all dependency rule referring to a parameter. - * This removes all dependency rules from a parameter, that refer to as specific - * parameter. If no rule is registered with this parameter as reference, the - * method call will simply be ignored. - * - * @param ezcConsoleOption $param The param to be check for rules. - * @return void - */ - public function removeAllDependencies( ezcConsoleOption $param ) - { - foreach ( $this->dependencies as $id => $rule ) - { - if ( $rule->option == $param ) - { - unset( $this->dependencies[$id] ); - } - } - } - - /** - * Returns if a dependency to the given option exists. - * Returns true if a dependency rule to the given option is registered, - * otherwise false. - * - * @param ezcConsoleOption $param The param to check if a dependency exists to. - * @return bool True if rule is registered, otherwise false. - */ - public function hasDependency( ezcConsoleOption $param ) - { - foreach ( $this->dependencies as $id => $rule ) - { - if ( $rule->option == $param ) - { - return true; - } - } - return false; - } - - /** - * Returns the dependency rules registered with this parameter. - * Returns an array of registered dependencies. - * - * For example: - * - * array( - * 0 => ezcConsoleOptionRule, - * 1 => ezcConsoleOptionRule, - * 2 => ezcConsoleOptionRule, - * ); - * - * - * @return array(ezcConsoleOptionRule) Dependency definition. - */ - public function getDependencies() - { - return $this->dependencies; - } - - /** - * Reset existing dependency rules. - * Deletes all registered dependency rules from the option definition. - * - * @return void - */ - public function resetDependencies() - { - $this->dependencies = array(); - } - - /** - * Add a new exclusion for an option. - * This registeres a new exclusion rule with the option. If you try - * to add an already registered rule it will simply be ignored. Else, - * the submitted rule will be added to the option as a exclusion. - * - * @param ezcConsoleOptionRule $rule The rule to add. - * @return void - */ - public function addExclusion( ezcConsoleOptionRule $rule ) - { - foreach ( $this->exclusions as $existRule ) - { - if ( $rule == $existRule ) - { - return; - } - } - $this->exclusions[] = $rule; - } - - /** - * Remove a exclusion rule from a option. - * This removes a given rule from a option, if it exists. If the rule is - * not registered with the option, the method call will simply be ignored. - * - * @param ezcConsoleOptionRule $rule The rule to be removed. - * @return void - */ - public function removeExclusion( ezcConsoleOptionRule $rule ) - { - foreach ( $this->exclusions as $id => $existRule ) - { - if ( $rule == $existRule ) - { - unset( $this->exclusions[$id] ); - } - } - } - - /** - * Remove all exclusion rule referring to a option. - * This removes all exclusion rules from a option, that refer to as specific - * option. If no rule is registered with this option as reference, the - * method call will simply be ignored. - * - * @param ezcConsoleOption $param The option to remove rule for. - * @return void - */ - public function removeAllExclusions( ezcConsoleOption $param ) - { - foreach ( $this->exclusions as $id => $rule ) - { - if ( $rule->option == $param ) - { - unset( $this->exclusions[$id] ); - } - } - } - - /** - * Returns if a given exclusion rule is registered with the option. - * Returns true if a exclusion rule to the given option is registered, - * otherwise false. - * - * @param ezcConsoleOption $param The param to check if exclusions exist for. - * @return bool True if rule is registered, otherwise false. - */ - public function hasExclusion( ezcConsoleOption $param ) - { - foreach ( $this->exclusions as $id => $rule ) - { - if ( $rule->option == $param ) - { - return true; - } - } - return false; - } - - /** - * Returns the exclusion rules registered with this parameter. - * Returns an array of registered exclusions. - * - * For example: - * - * array( - * 0 => ezcConsoleOptionRule, - * 1 => ezcConsoleOptionRule, - * 2 => ezcConsoleOptionRule, - * ); - * - * - * @return array(ezcConsoleOptionRule) Exclusions definition. - */ - public function getExclusions() - { - return $this->exclusions; - } - - /** - * Reset existing exclusion rules. - * Deletes all registered exclusion rules from the option definition. - * - * @return void - */ - public function resetExclusions() - { - $this->exclusions = array(); - } - - /** - * Property read access. - * Provides read access to the properties of the object. - * - * @param string $key The name of the property. - * @return mixed The value if property exists and isset, otherwise null. - * @ignore - */ - public function __get( $key ) - { - switch ( $key ) - { - case 'short': - case 'long': - case 'type': - case 'default': - case 'multiple': - case 'shorthelp': - case 'longhelp': - case 'arguments': - case 'isHelpOption': - case 'mandatory': - return $this->properties[$key]; - case 'dependencies': - default: - throw new ezcBasePropertyNotFoundException( $key ); - } - } - - /** - * Property write access. - * - * @param string $key Name of the property. - * @param mixed $val The value for the property. - * - * @throws ezcBasePropertyPermissionException - * If the property you try to access is read-only. - * @throws ezcBasePropertyNotFoundException - * If the the desired property is not found. - * @ignore - */ - public function __set( $key, $val ) - { - switch ( $key ) - { - case 'type': - if ( $val !== ezcConsoleInput::TYPE_NONE - && $val !== ezcConsoleInput::TYPE_INT - && $val !== ezcConsoleInput::TYPE_STRING ) - { - throw new ezcBaseValueException( - $key, - $val, - 'ezcConsoleInput::TYPE_STRING, ezcConsoleInput::TYPE_INT or ezcConsoleInput::TYPE_NONE' - ); - } - break; - case 'default': - if ( ( is_scalar( $val ) === false && $val !== null ) ) - { - // Newly allow arrays, if multiple is true - if ( $this->multiple === true && is_array( $val ) === true ) - { - break; - } - throw new ezcBaseValueException( $key, $val, 'a string or a number, if multiple == true also an array' ); - } - break; - case 'multiple': - if ( !is_bool( $val ) ) - { - throw new ezcBaseValueException( $key, $val, 'bool' ); - } - break; - case 'shorthelp': - if ( !is_string( $val ) ) - { - throw new ezcBaseValueException( $key, $val, 'string' ); - } - break; - case 'longhelp': - if ( !is_string( $val ) ) - { - throw new ezcBaseValueException( $key, $val, 'string' ); - } - break; - case 'arguments': - if ( !is_bool( $val ) ) - { - throw new ezcBaseValueException( $key, $val, 'bool' ); - } - break; - case 'mandatory': - if ( !is_bool( $val ) ) - { - throw new ezcBaseValueException( $key, $val, 'bool' ); - } - break; - case 'isHelpOption': - if ( !is_bool( $val ) ) - { - throw new ezcBaseValueException( $key, $val, 'bool' ); - } - break; - case 'long': - case 'short': - throw new ezcBasePropertyPermissionException( $key, ezcBasePropertyPermissionException::READ ); - break; - default: - throw new ezcBasePropertyNotFoundException( $key ); - break; - } - $this->properties[$key] = $val; - } - - /** - * Property isset access. - * - * @param string $key Name of the property. - * @return bool True is the property is set, otherwise false. - * @ignore - */ - public function __isset( $key ) - { - switch ( $key ) - { - case 'short': - case 'long': - case 'type': - case 'default': - case 'multiple': - case 'shorthelp': - case 'longhelp': - case 'arguments': - case 'isHelpOption': - case 'mandatory': - return ( $this->properties[$key] !== null ); - } - return false; - } - - /** - * Returns if a given name if valid for use as a parameter name a parameter. - * Checks if a given parameter name is generally valid for use. It checks a) - * that the name does not start with '-' or '--' and b) if it contains - * whitespaces. Note, that this method does not check any conflicts with already - * used parameter names. - * - * @param string $name The name to check. - * @return bool True if the name is valid, otherwise false. - */ - public static function validateOptionName( $name ) - { - if ( substr( $name, 0, 1 ) === '-' || strpos( $name, ' ' ) !== false ) - { - return false; - } - return true; - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/validators/standard.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/validators/standard.php deleted file mode 100644 index 1c6cff2..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/input/validators/standard.php +++ /dev/null @@ -1,172 +0,0 @@ - $option ) - { - if ( $option->mandatory === true && $option->value === false ) - { - throw new ezcConsoleOptionMandatoryViolationException( $option ); - } - - $this->validateDependencies( $option); - $this->validateExclusions( $option ); - - if ( $option->arguments === false && $option->value !== false && $hasArguments ) - { - throw new ezcConsoleOptionArgumentsViolationException( $option ); - } - } - } - - /** - * Validated option dependencies. - * - * Validates dependencies by $option. - * - * @param ezcConsoleOption $option. - */ - private function validateDependencies( ezcConsoleOption $option ) - { - $optSet = ( $option->value !== false - && ( !is_array( $option->value ) || $option->value !== array() ) ); - - foreach ( $option->getDependencies() as $dep ) - { - if ( $dep->ifSet === $optSet ) - { - $this->validateDependency( $option, $dep ); - } - } - } - - /** - * Validates a single dependency. - * - * Validates the dependency $dep, which is set in the $srcOpt. - * - * @param ezcConsoleOption $srcOpt - * @param ezcConsoleOptionRule $dep - */ - private function validateDependency( ezcConsoleOption $srcOpt, ezcConsoleOptionRule $dep ) - { - $optValue = $dep->option->value; - - if ( $optValue === false || $optValue === array() ) - { - throw new ezcConsoleOptionDependencyViolationException( - $srcOpt, - $dep->option, - implode( ', ', $dep->values ) - ); - } - - if ( $dep->values !== array() ) - { - $optVals = ( is_array( $optValue ) ? $optValue : array( $optValue) ); - $unrecognizedVals = array_diff( $optVals, $dep->values ); - if ( $unrecognizedVals !== array() ) - { - throw new ezcConsoleOptionDependencyViolationException( - $srcOpt, - $dep->option, - implode( ', ', $dep->values ) - ); - } - } - } - - /** - * Validated option exclusions. - * - * Validates exclusions by $option. - * - * @param ezcConsoleOption $option. - */ - private function validateExclusions( ezcConsoleOption $option ) - { - $optSet = ( $option->value !== false - && ( !is_array( $option->value ) || $option->value !== array() ) ); - - foreach ( $option->getExclusions() as $excl ) - { - if ( $excl->ifSet === $optSet ) - { - $this->validateExclusion( $option, $excl ); - } - } - } - - /** - * Validates a single exclusion. - * - * Validates the exclusion $excl, which is set in the $srcOpt. - * - * @param ezcConsoleOption $srcOpt - * @param ezcConsoleOptionRule $excl - */ - private function validateExclusion( ezcConsoleOption $srcOpt, ezcConsoleOptionRule $excl ) - { - $optValue = $excl->option->value; - - if ( $optValue !== false && $optValue !== array() && $excl->values === array() ) - { - throw new ezcConsoleOptionExclusionViolationException( - $srcOpt, - $excl->option - ); - } - - $optVals = ( is_array( $optValue ) ? $optValue : array( $optValue ) ); - $forbiddenVals = array_intersect( $optVals, $excl->values ); - if ( $forbiddenVals !== array() ) - { - throw new ezcConsoleOptionExclusionViolationException( - $srcOpt, - $excl->option, - implode( ', ', $excl->values ) - ); - } - } -} - -?> diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog.php deleted file mode 100644 index 8d956c5..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog.php +++ /dev/null @@ -1,82 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog_validator.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog_validator.php deleted file mode 100644 index 8a21a57..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/dialog_validator.php +++ /dev/null @@ -1,57 +0,0 @@ - diff --git a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/input_help_generator.php b/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/input_help_generator.php deleted file mode 100644 index eb010b4..0000000 --- a/vendor/eher/phpunit/src/php/ezc/ConsoleTools/interfaces/input_help_generator.php +++ /dev/null @@ -1,170 +0,0 @@ - - * array( - * 0 => '