diff --git a/composer.json b/composer.json index dbc4ecb..09bfa65 100644 --- a/composer.json +++ b/composer.json @@ -25,11 +25,6 @@ "friendsofphp/php-cs-fixer": "^2.14", "phpunit/phpunit": "^8.1" }, - "autoload": { - "psr-4": { - "Fundevogel\\": "lib/" - } - }, "autoload-dev": { "psr-4": { "Fundevogel\\Tests\\": "tests/" diff --git a/index.php b/index.php index 9e3d9c3..925e067 100644 --- a/index.php +++ b/index.php @@ -2,7 +2,48 @@ @include_once __DIR__ . '/vendor/autoload.php'; -use Fundevogel\Chart; +use Fundevogel\Donut; + +function saveSVG(Kirby\Cms\Page $page, array $data) +{ + $thickness = $thickness ?? option('fundevogel.donuts.thickness'); + $spacing = $spacing ?? option('fundevogel.donuts.spacing'); + + $donut = new Donut( + $data['entries'], + $data['thickness'], + $data['spacing'] + ); + + $content = $donut->getSVGElement(); + + $file = new File([ + 'parent' => $page, + 'filename' => 'chart-' . hash('md5', $content), + ]); + + $file->update([ + 'template' => option('fundevogel.donuts.template'), + ]); + + if (file_exists($file->root())) { + if (option('fundevogel.donuts.inline') === true) { + return svg($file); + } + + return $file; + } + + if (F::write($file->root(), $content)) { + if (option('fundevogel.donuts.inline') === true) { + return svg($file); + } + + return $file; + } + + throw new Exception('Couldn\'t create chart!'); +} Kirby::plugin('fundevogel/donuts', [ 'options' => [ @@ -29,11 +70,11 @@ float $spacing = null ) { try { - $file = (new Chart($this, [ + $file = saveSVG($this, [ 'entries' => $entries, 'thickness' => $thickness, 'spacing' => $spacing, - ]))->render(); + ]); } catch (Exception $e) { throw $e; } @@ -57,11 +98,11 @@ $entries = $field->toStructure()->toArray(); try { - $file = (new Chart($page, [ + $file = saveSVG($page, [ 'entries' => $entries, 'thickness' => $thickness, 'spacing' => $spacing, - ]))->render(); + ]); } catch (Exception $e) { throw $e; } diff --git a/lib/Chart.php b/lib/Chart.php deleted file mode 100644 index 7f0c848..0000000 --- a/lib/Chart.php +++ /dev/null @@ -1,91 +0,0 @@ -page = $page; - $this->thickness = $options['thickness']; - $this->entries = $options['entries']; - $this->spacing = $options['spacing']; - } - - function render(Kirby\Cms\Page $page, array $data) - { - $thickness = $thickness ?? option('fundevogel.donuts.thickness'); - $spacing = $spacing ?? option('fundevogel.donuts.spacing'); - - $donut = new Donut( - $data['entries'], - $data['thickness'], - $data['spacing'] - ); - - $content = $donut->getSVGElement(); - - $file = new File([ - 'parent' => $page, - 'filename' => 'chart-' . hash('md5', $content), - ]); - - $file->update([ - 'template' => option('fundevogel.donuts.template'), - ]); - - if (file_exists($file->root())) { - if (option('fundevogel.donuts.inline') === true) { - return svg($file); - } - - return $file; - } - - if (F::write($file->root(), $content)) { - - if (option('fundevogel.donuts.inline') === true) { - return svg($file); - } - - return $file; - } - - throw new Exception('Couldn\'t create chart!'); - } -}