<?php namespace Xentral\Modules\Label; use Xentral\Modules\Label\Exception\InvalidArgumentException; use Xentral\Modules\Label\Exception\LabelAssignException; use Xentral\Modules\Label\Exception\LabelTypeNotFoundException; /** * Simple Facade for accessing LabelService and LabelGateway */ final class LabelModule { /** @var LabelService $service */ private $service; /** @var LabelGateway $gateway */ private $gateway; /** * @param LabelService $service * @param LabelGateway $gateway */ public function __construct(LabelService $service, LabelGateway $gateway) { $this->service = $service; $this->gateway = $gateway; } /** * @param string $referenceTable * @param int $referenceId * @param string $labelType * * @throws InvalidArgumentException * @throws LabelTypeNotFoundException * @throws LabelAssignException If assignment fails * * @return int Created ID from label_reference table */ public function assignLabel($referenceTable, $referenceId, $labelType) { return $this->service->assignLabel($referenceTable, $referenceId, $labelType); } /** * @param string $referenceTable * @param int $referenceId * @param string $labelType * * @throws InvalidArgumentException * @throws LabelAssignException If assignment fails * * @return void */ public function unassignLabel($referenceTable, $referenceId, $labelType) { $this->service->unassignLabel($referenceTable, $referenceId, $labelType); } /** * @param string $referenceTable * @param int $referenceId * * @return array */ public function findLabelsByReference($referenceTable, $referenceId) { return $this->gateway->findLabelsByReference($referenceTable, $referenceId); } /** * @param string $referenceTable * @param int[]|array $referenceIds * * @return array */ public function findLabelsByReferences($referenceTable, $referenceIds) { return $this->gateway->findLabelsByReferences($referenceTable, $referenceIds); } /** * @param string $referenceTable * @param int $referenceId * * @return array */ public function findLabelTypesByReference($referenceTable, $referenceId) { return $this->gateway->findLabelTypesByReference($referenceTable, $referenceId); } }