From 52c41a205e95f21eb151fcb28a6076020f2b8837 Mon Sep 17 00:00:00 2001 From: Abel Hoogeveen Date: Tue, 30 Nov 2021 00:42:08 +0100 Subject: [PATCH] PHP8 compatibility update. - Updated to latest libraries - Added and amended config files - Implemented drone --- .codeclimate.yml | 25 --- .drone.yml | 30 +++ .gitlab-ci.yml | 82 -------- .travis.yml | 12 -- README.md | 8 +- application/Config/config.core.php | 40 ---- application/Config/config.mimes.php | 197 ------------------ application/Config/config.objectstorage.php | 58 ++++++ application/Config/config.routing.php | 1 + application/Config/placeholder | 0 application/Controller/placeholder | 0 application/Layout/placeholder | 0 application/View/placeholder | 0 application/View/view.html.index.php | 5 + composer.json | 16 +- ...oadFuzeWorksTest.php => FuzeWorksTest.php} | 2 +- test/phpunit.xml | 48 ++--- 17 files changed, 120 insertions(+), 404 deletions(-) delete mode 100644 .codeclimate.yml create mode 100644 .drone.yml delete mode 100644 .gitlab-ci.yml delete mode 100644 .travis.yml delete mode 100644 application/Config/config.core.php delete mode 100644 application/Config/config.mimes.php create mode 100644 application/Config/config.objectstorage.php delete mode 100644 application/Config/placeholder delete mode 100644 application/Controller/placeholder delete mode 100644 application/Layout/placeholder delete mode 100644 application/View/placeholder rename test/application/{core_loadFuzeWorksTest.php => FuzeWorksTest.php} (97%) diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index 3582bcf..0000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- -engines: - duplication: - enabled: true - config: - languages: - - ruby - - javascript - - python - - php - fixme: - enabled: true - phpmd: - enabled: true -ratings: - paths: - - "**.inc" - - "**.js" - - "**.jsx" - - "**.module" - - "**.php" - - "**.py" - - "**.rb" -exclude_paths: -- tests/ diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..ec6e2a6 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,30 @@ +kind: pipeline +type: docker +name: test + +steps: + - name: composer + image: composer:latest + commands: + - composer install + + - name: php74test + image: registry.i15.nl/i15/fuzephp:7.4-alpine + commands: + - docker-php-ext-enable xdebug + - vendor/bin/phpunit -c test/phpunit.xml + + - name: php80test + image: registry.i15.nl/i15/fuzephp:8.0-alpine + commands: + - docker-php-ext-enable xdebug + - vendor/bin/phpunit -c test/phpunit.xml + + - name: coverage + image: registry.i15.nl/i15/fuzephp:8.0-alpine + commands: + - docker-php-ext-enable xdebug + - vendor/bin/phpunit -c test/phpunit.xml --coverage-text + +image_pull_secrets: + - dockerconfig \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index f0de947..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,82 +0,0 @@ -before_script: -# Install dependencies -- set -xe -- apt-get update -yqq -- apt-get install git zip unzip -yqq - -stages: - - build - - test - - deploy - -build:composer: - image: php:7.2 - stage: build - script: - - curl -sS https://getcomposer.org/installer | php - - php composer.phar install - cache: - key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME" - paths: - - vendor/ - -test:7.1: - stage: test - image: php:7.1 - script: - - vendor/bin/phpunit -c test/phpunit.xml - cache: - key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME" - paths: - - vendor/ - -test:7.2: - stage: test - image: php:7.2 - script: - - vendor/bin/phpunit -c test/phpunit.xml - cache: - key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME" - paths: - - vendor/ - -test:7.3: - stage: test - image: php:7.3 - script: - - vendor/bin/phpunit -c test/phpunit.xml - cache: - key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME" - paths: - - vendor/ - -test:coverage: - stage: test - image: php:7.2 - script: - - pecl install xdebug - - docker-php-ext-enable xdebug - - vendor/bin/phpunit -c test/phpunit.xml --coverage-text - cache: - key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME" - paths: - - vendor/ - -release: - stage: deploy - image: php:7.2 - only: - - master - script: - - pecl install xdebug - - docker-php-ext-enable xdebug - - vendor/bin/phpunit -c test/phpunit.xml --coverage-text - artifacts: - name: "${CI_BUILD_NAME}_${CI_BUILD_REF_NAME}" - paths: - - build/ - expire_in: 3 weeks - cache: - key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME" - paths: - - vendor/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5dc59b7..0000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: php - -php: - - 7.1 - - 7.2 - - 7.3 - -script: - - php vendor/bin/phpunit -v -c tests/phpunit.xml --coverage-text - -before_script: - - composer install \ No newline at end of file diff --git a/README.md b/README.md index 4ed0b86..38e09c1 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -FuzeWorks Application Skeleton [![Build Status](https://travis-ci.org/FuzeWorks/Application.svg?branch=master)](https://travis-ci.org/FuzeWorks/Application) +FuzeWorks Application Skeleton [![Build Status](https://drone.i15.nl/api/badges/FuzeWorks/Application/status.svg)](https://drone.i15.nl/FuzeWorks/Application) ================= -This is a simple, skeleton application using [FuzeWorks](https://techfuze.net/fuzeworks). This is meant to +This is a simple, skeleton application using [FuzeWorks](https://i15.nl/fuzeworks). This is meant to be used as a starting point for your new projects. -[FuzeWorks](https://techfuze.net/fuzeworks) is a versatile framework for web development. +[FuzeWorks](https://i15.nl/fuzeworks) is a versatile framework for web development. It is designed to be the most usable and friendliest as possible. It focuses on security and performance. @@ -12,7 +12,7 @@ on security and performance. Requirements ------------ -PHP 7.1 or higher. +PHP 7.4 or higher. Installation diff --git a/application/Config/config.core.php b/application/Config/config.core.php deleted file mode 100644 index ddb2a2a..0000000 --- a/application/Config/config.core.php +++ /dev/null @@ -1,40 +0,0 @@ - true -); diff --git a/application/Config/config.mimes.php b/application/Config/config.mimes.php deleted file mode 100644 index c308900..0000000 --- a/application/Config/config.mimes.php +++ /dev/null @@ -1,197 +0,0 @@ - array('application/mac-binhex40', 'application/mac-binhex', 'application/x-binhex40', 'application/x-mac-binhex40'), - 'cpt' => 'application/mac-compactpro', - 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain'), - 'bin' => array('application/macbinary', 'application/mac-binary', 'application/octet-stream', 'application/x-binary', 'application/x-macbinary'), - 'dms' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'exe' => array('application/octet-stream', 'application/x-msdownload'), - 'class' => 'application/octet-stream', - 'psd' => array('application/x-photoshop', 'image/vnd.adobe.photoshop'), - 'so' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => array('application/pdf', 'application/force-download', 'application/x-download', 'binary/octet-stream'), - 'ai' => array('application/pdf', 'application/postscript'), - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => array('application/vnd.ms-excel', 'application/msexcel', 'application/x-msexcel', 'application/x-ms-excel', 'application/x-excel', 'application/x-dos_ms_excel', 'application/xls', 'application/x-xls', 'application/excel', 'application/download', 'application/vnd.ms-office', 'application/msword'), - 'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint', 'application/vnd.ms-office', 'application/msword'), - 'pptx' => array('application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/x-zip', 'application/zip'), - 'wbxml' => 'application/wbxml', - 'wmlc' => 'application/wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'gz' => 'application/x-gzip', - 'gzip' => 'application/x-gzip', - 'php' => array('application/x-httpd-php', 'application/php', 'application/x-php', 'text/php', 'text/x-php', 'application/x-httpd-php-source'), - 'php4' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'js' => array('application/x-javascript', 'text/plain'), - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => array('application/x-tar', 'application/x-gzip-compressed'), - 'z' => 'application/x-compress', - 'xhtml' => 'application/xhtml+xml', - 'xht' => 'application/xhtml+xml', - 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed', 'application/s-compressed', 'multipart/x-zip'), - 'rar' => array('application/x-rar', 'application/rar', 'application/x-rar-compressed'), - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mpga' => 'audio/mpeg', - 'mp2' => 'audio/mpeg', - 'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'), - 'aif' => array('audio/x-aiff', 'audio/aiff'), - 'aiff' => array('audio/x-aiff', 'audio/aiff'), - 'aifc' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'rv' => 'video/vnd.rn-realvideo', - 'wav' => array('audio/x-wav', 'audio/wave', 'audio/wav'), - 'bmp' => array('image/bmp', 'image/x-bmp', 'image/x-bitmap', 'image/x-xbitmap', 'image/x-win-bitmap', 'image/x-windows-bmp', 'image/ms-bmp', 'image/x-ms-bmp', 'application/bmp', 'application/x-bmp', 'application/x-win-bitmap'), - 'gif' => 'image/gif', - 'jpeg' => array('image/jpeg', 'image/pjpeg'), - 'jpg' => array('image/jpeg', 'image/pjpeg'), - 'jpe' => array('image/jpeg', 'image/pjpeg'), - 'jp2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'j2k' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'jpf' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'jpg2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'jpx' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'jpm' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'mj2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'mjp2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), - 'png' => array('image/png', 'image/x-png'), - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'css' => array('text/css', 'text/plain'), - 'html' => array('text/html', 'text/plain'), - 'htm' => array('text/html', 'text/plain'), - 'shtml' => array('text/html', 'text/plain'), - 'txt' => 'text/plain', - 'text' => 'text/plain', - 'log' => array('text/plain', 'text/x-log'), - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'xml' => array('application/xml', 'text/xml', 'text/plain'), - 'xsl' => array('application/xml', 'text/xsl', 'text/xml'), - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'qt' => 'video/quicktime', - 'mov' => 'video/quicktime', - 'avi' => array('video/x-msvideo', 'video/msvideo', 'video/avi', 'application/x-troff-msvideo'), - 'movie' => 'video/x-sgi-movie', - 'doc' => array('application/msword', 'application/vnd.ms-office'), - 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword', 'application/x-zip'), - 'dot' => array('application/msword', 'application/vnd.ms-office'), - 'dotx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword'), - 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip'), - 'word' => array('application/msword', 'application/octet-stream'), - 'xl' => 'application/excel', - 'eml' => 'message/rfc822', - 'json' => array('application/json', 'text/json'), - 'pem' => array('application/x-x509-user-cert', 'application/x-pem-file', 'application/octet-stream'), - 'p10' => array('application/x-pkcs10', 'application/pkcs10'), - 'p12' => 'application/x-pkcs12', - 'p7a' => 'application/x-pkcs7-signature', - 'p7c' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'), - 'p7m' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'), - 'p7r' => 'application/x-pkcs7-certreqresp', - 'p7s' => 'application/pkcs7-signature', - 'crt' => array('application/x-x509-ca-cert', 'application/x-x509-user-cert', 'application/pkix-cert'), - 'crl' => array('application/pkix-crl', 'application/pkcs-crl'), - 'der' => 'application/x-x509-ca-cert', - 'kdb' => 'application/octet-stream', - 'pgp' => 'application/pgp', - 'gpg' => 'application/gpg-keys', - 'sst' => 'application/octet-stream', - 'csr' => 'application/octet-stream', - 'rsa' => 'application/x-pkcs7', - 'cer' => array('application/pkix-cert', 'application/x-x509-ca-cert'), - '3g2' => 'video/3gpp2', - '3gp' => array('video/3gp', 'video/3gpp'), - 'mp4' => 'video/mp4', - 'm4a' => 'audio/x-m4a', - 'f4v' => array('video/mp4', 'video/x-f4v'), - 'flv' => 'video/x-flv', - 'webm' => 'video/webm', - 'aac' => 'audio/x-acc', - 'm4u' => 'application/vnd.mpegurl', - 'm3u' => 'text/plain', - 'xspf' => 'application/xspf+xml', - 'vlc' => 'application/videolan', - 'wmv' => array('video/x-ms-wmv', 'video/x-ms-asf'), - 'au' => 'audio/x-au', - 'ac3' => 'audio/ac3', - 'flac' => 'audio/x-flac', - 'ogg' => array('audio/ogg', 'video/ogg', 'application/ogg'), - 'kmz' => array('application/vnd.google-earth.kmz', 'application/zip', 'application/x-zip'), - 'kml' => array('application/vnd.google-earth.kml+xml', 'application/xml', 'text/xml'), - 'ics' => 'text/calendar', - 'ical' => 'text/calendar', - 'zsh' => 'text/x-scriptzsh', - '7zip' => array('application/x-compressed', 'application/x-zip-compressed', 'application/zip', 'multipart/x-zip'), - 'cdr' => array('application/cdr', 'application/coreldraw', 'application/x-cdr', 'application/x-coreldraw', 'image/cdr', 'image/x-cdr', 'zz-application/zz-winassoc-cdr'), - 'wma' => array('audio/x-ms-wma', 'video/x-ms-asf'), - 'jar' => array('application/java-archive', 'application/x-java-application', 'application/x-jar', 'application/x-compressed'), - 'svg' => array('image/svg+xml', 'application/xml', 'text/xml'), - 'vcf' => 'text/x-vcard', - 'srt' => array('text/srt', 'text/plain'), - 'vtt' => array('text/vtt', 'text/plain'), - 'ico' => array('image/x-icon', 'image/x-ico', 'image/vnd.microsoft.icon') -]; \ No newline at end of file diff --git a/application/Config/config.objectstorage.php b/application/Config/config.objectstorage.php new file mode 100644 index 0000000..16bbac5 --- /dev/null +++ b/application/Config/config.objectstorage.php @@ -0,0 +1,58 @@ + Core::getEnv('OBJECTSTORAGE_PROVIDER', 'DummyProvider'), + 'DummyProvider' => [], + 'RedisProvider' => [ + // Type can be 'tcp' or 'unix' + 'socket_type' => Core::getEnv('OBJECTSTORAGE_REDIS_SOCKET_TYPE', 'tcp'), + // If socket_type == 'unix', set the socket here + 'socket' => Core::getEnv('OBJECTSTORAGE_REDIS_SOCKET', null), + // If socket_type == 'tcp', set the host here + 'host' => Core::getEnv('OBJECTSTORAGE_REDIS_HOST', '127.0.0.1'), + // And some standard settings + 'port' => Core::getEnv('OBJECTSTORAGE_REDIS_PORT', 6379), + 'password' => Core::getEnv('OBJECTSTORAGE_REDIS_PASSWORD', null), + 'timeout' => Core::getEnv('OBJECTSTORAGE_REDIS_TIMEOUT', 0), + 'db_index' => Core::getEnv('OBJECTSTORAGE_REDIS_DBINDEX', 0), + ], + 'FileProvider' => [ + // The directory where objects get stored by the FileProvider + 'storage_directory' => Core::getEnv('OBJECTSTORAGE_FILE_DIRECTORY', Core::$tempDir) + ] +]; \ No newline at end of file diff --git a/application/Config/config.routing.php b/application/Config/config.routing.php index 7997bd0..1b6c130 100644 --- a/application/Config/config.routing.php +++ b/application/Config/config.routing.php @@ -39,5 +39,6 @@ return array( 'default_view' => 'index', 'default_viewType' => 'html', 'default_viewMethod' => 'index', + 'default_namespacePrefix' => '\Application\\' ); diff --git a/application/Config/placeholder b/application/Config/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/application/Controller/placeholder b/application/Controller/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/application/Layout/placeholder b/application/Layout/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/application/View/placeholder b/application/View/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/application/View/view.html.index.php b/application/View/view.html.index.php index 12b8aaa..3c84427 100644 --- a/application/View/view.html.index.php +++ b/application/View/view.html.index.php @@ -36,11 +36,16 @@ namespace Application\View; +use Application\Controller\IndexController; +use FuzeWorks\Controller; use FuzeWorks\WebAppView; class IndexHtmlView extends WebAppView { + /** @var IndexController $controller */ + protected Controller $controller; + public function index() { return $this->layouts->get('home'); diff --git a/composer.json b/composer.json index 2aeac98..2ede5ed 100644 --- a/composer.json +++ b/composer.json @@ -1,23 +1,19 @@ { "name": "fuzeworks/application", "description": "FuzeWorks Application Skeleton", - "homepage": "https://techfuze.net/fuzeworks", + "homepage": "https://i15.nl/fuzeworks", "license": ["MIT"], "authors": [ { - "name": "TechFuze", - "homepage": "https://techfuze.net" - }, - { - "name": "FuzeWorks Community", - "homepage": "https://techfuze.net/fuzeworks/contributors" + "name": "Abel Hoogeveen", + "homepage": "https://i15.nl" } ], "require": { - "php": ">=7.1.0", - "fuzeworks/webappcomponent": "~1.2.0" + "php": ">=7.4.0", + "fuzeworks/webappcomponent": "~1.3.0" }, "require-dev": { - "phpunit/phpunit": "^7" + "phpunit/phpunit": "^9" } } \ No newline at end of file diff --git a/test/application/core_loadFuzeWorksTest.php b/test/application/FuzeWorksTest.php similarity index 97% rename from test/application/core_loadFuzeWorksTest.php rename to test/application/FuzeWorksTest.php index a0289d7..0d4eeee 100644 --- a/test/application/core_loadFuzeWorksTest.php +++ b/test/application/FuzeWorksTest.php @@ -40,7 +40,7 @@ use PHPUnit\Framework\TestCase; * Tests if the application is able to open FuzeWorks and all it's classes. * Does not test any internal workings of FuzeWorks */ -class loadFuzeWorksTest extends TestCase +class FuzeWorksTest extends TestCase { public function testLoadCore() diff --git a/test/phpunit.xml b/test/phpunit.xml index 7f0943b..3880f12 100644 --- a/test/phpunit.xml +++ b/test/phpunit.xml @@ -1,38 +1,20 @@ - - + + + + + ../ + + + ../vendor/ + ../test/ + ../build/ + ../log/ + ../temp/ + + - + ./ - - - - - - - - - - - ../ - - ../vendor/ - ../test/ - ../www/ - ../build/ - ../log/ - ../temp/ - - - \ No newline at end of file