From 027a81c1703bb9f4943b7ac604191669113f8779 Mon Sep 17 00:00:00 2001 From: magdev Date: Sat, 1 Jun 2019 12:31:10 +0200 Subject: [PATCH] Introduced toggable objects --- src/Model/CurriculumVitae/Entry.php | 2 + src/Model/Person.php | 10 +++- src/Model/Person/Contact.php | 8 ++- src/Model/Person/Reference.php | 3 + src/Model/Project.php | 3 + src/Model/Traits/ToggableTrait.php | 91 +++++++++++++++++++++++++++++ src/Service/MarkdownService.php | 10 +++- 7 files changed, 122 insertions(+), 5 deletions(-) create mode 100644 src/Model/Traits/ToggableTrait.php diff --git a/src/Model/CurriculumVitae/Entry.php b/src/Model/CurriculumVitae/Entry.php index 8c23dff..acd1b60 100644 --- a/src/Model/CurriculumVitae/Entry.php +++ b/src/Model/CurriculumVitae/Entry.php @@ -32,6 +32,7 @@ namespace Magdev\Dossier\Model\CurriculumVitae; use Magdev\Dossier\Model\AbstractModel; use Magdev\Dossier\Model\Traits\PhotoTrait; +use Magdev\Dossier\Model\Traits\ToggableTrait; use Mni\FrontYAML\Document; use Magdev\Dossier\Model\Base\BaseModel; use Magdev\Dossier\Analyzer\Base\AnalyzableInterface; @@ -46,6 +47,7 @@ use Magdev\Dossier\Model\Base\PhotoInterface; final class Entry extends BaseModel implements PhotoInterface, AnalyzableInterface { use PhotoTrait; + use ToggableTrait; /** * Start date diff --git a/src/Model/Person.php b/src/Model/Person.php index 4f360ee..5db6e92 100644 --- a/src/Model/Person.php +++ b/src/Model/Person.php @@ -371,7 +371,10 @@ final class Person extends BaseModel implements PhotoInterface, AnalyzableInterf foreach ($value as $type => $address) { if ($type == 'accounts' && is_array($address)) { foreach ($address as $a) { - $this->contacts->append(new Contact($a['address'], $a['type'])); + $contact = new Contact($a['address'], $a['type'], $a['active']); + if ($contact->isActive()) { + $this->contacts->append($contact); + } } } else { $this->contacts->append(new Contact($address, $type)); @@ -379,7 +382,10 @@ final class Person extends BaseModel implements PhotoInterface, AnalyzableInterf } } else if ($key == 'references') { foreach ($value as $reference) { - $this->references->append(new Reference($reference)); + $ref = new Reference($reference); + if ($ref->isActive()) { + $this->references->append($ref); + } } } else { $this->setProperty($key, $value); diff --git a/src/Model/Person/Contact.php b/src/Model/Person/Contact.php index d896c46..b933082 100644 --- a/src/Model/Person/Contact.php +++ b/src/Model/Person/Contact.php @@ -30,6 +30,8 @@ namespace Magdev\Dossier\Model\Person; +use Magdev\Dossier\Model\Traits\ToggableTrait; + /** * Contact model * @@ -37,6 +39,8 @@ namespace Magdev\Dossier\Model\Person; */ class Contact { + use ToggableTrait; + /** * Contact address * @var string @@ -55,11 +59,13 @@ class Contact * * @param string $address * @param string $type + * @param bool $active */ - public function __construct(string $address, string $type) + public function __construct(string $address, string $type, ?bool $active = true) { $this->address = $address; $this->type = $type; + $this->active = $active; } diff --git a/src/Model/Person/Reference.php b/src/Model/Person/Reference.php index 60da667..4e1f5f2 100644 --- a/src/Model/Person/Reference.php +++ b/src/Model/Person/Reference.php @@ -31,6 +31,7 @@ namespace Magdev\Dossier\Model\Person; use Magdev\Dossier\Model\Base\BaseModel; +use Magdev\Dossier\Model\Traits\ToggableTrait; /** * Model for job references @@ -39,6 +40,8 @@ use Magdev\Dossier\Model\Base\BaseModel; */ class Reference extends BaseModel { + use ToggableTrait; + /** * Reference description * @var string diff --git a/src/Model/Project.php b/src/Model/Project.php index ea922f2..ec03eb1 100644 --- a/src/Model/Project.php +++ b/src/Model/Project.php @@ -31,6 +31,7 @@ namespace Magdev\Dossier\Model; use Magdev\Dossier\Model\Base\BaseModel; +use Magdev\Dossier\Model\Traits\ToggableTrait; use Mni\FrontYAML\Document; /** @@ -40,6 +41,8 @@ use Mni\FrontYAML\Document; */ class Project extends BaseModel { + use ToggableTrait; + /** * Project name * @var string diff --git a/src/Model/Traits/ToggableTrait.php b/src/Model/Traits/ToggableTrait.php new file mode 100644 index 0000000..5c9756d --- /dev/null +++ b/src/Model/Traits/ToggableTrait.php @@ -0,0 +1,91 @@ +active = true; + return self; + } + + + /** + * Deactivate object + * + * @return self + */ + public function deactivate(): self + { + $this->active = false; + return $this; + } + + + /** + * Toggle current activation status + * + * @return self + */ + public function toggle(): self + { + $this->active = !$this->active; + return $this; + } + + + /** + * Check if object is activated + * + * @return bool + */ + public function isActive(): bool + { + return $this->active; + } +} diff --git a/src/Service/MarkdownService.php b/src/Service/MarkdownService.php index 5ba541a..ab62486 100644 --- a/src/Service/MarkdownService.php +++ b/src/Service/MarkdownService.php @@ -108,7 +108,10 @@ class MarkdownService foreach ($files as $file) { /* @var $file \SplFileInfo */ $document = $this->getDocument($file->getPathname()); - $cv->append(new CurriculumVitae\Entry($document)); + $entry = new CurriculumVitae\Entry($document); + if ($entry->isActive()) { + $cv->append($entry); + } } $cv->setSortDirection($sort)->sort(); @@ -117,7 +120,10 @@ class MarkdownService foreach ($files as $file) { /* @var $file \SplFileInfo */ $document = $this->getDocument($file->getPathname()); - $projects->append(new Project($document)); + $project = new Project($document); + if ($project->isActive()) { + $projects->append($project); + } }