File: D:/HostingSpaces/bomacon/bomacon.nl/vendor/komma/kms/src/Sites/SiteService.php
<?php
namespace Komma\KMS\Sites;
use Komma\KMS\Core\Attributes\Models\SelectOption;
use Komma\KMS\Sites\Models\Site;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
use Komma\KMS\Sites\Models\SiteInterface;
final class SiteService
{
/**
* This method will get a specific site
*
* @param integer $id
* @return SiteInterface
*/
public function getSite($id = 1): int
{
return app(SiteInterface::class)::find($id);
}
/**
* This method will get all the sites
*
* @return Collection|static[]
*/
public function getSites()
{
$class = get_class(app(SiteInterface::class));
return $class::all();
}
/**
* Returns the site ids as a comma separated string for the HasSiteInterface implementation
*
* @param HasSitesInterface $model
* @return string Site ids, comma separated
*/
public function getSiteIdsForModel(HasSitesInterface $model): ?string
{
if(!$model->id) return null;
$idsCollection = $model->sites()->get(['id'])->map(function(Site $site ) {
return $site->id;
});
$idString = implode(',', $idsCollection->toArray());
if($idString == "") return null;
return $idString;
}
/**
* Return a collection of selectOptionModels containing sites
*/
public function getOptionsForSelect(): array
{
$class = get_class(app(SiteInterface::class));
$optionModels = $class::all()->map(function(Site $site) {
$optionModel = (new SelectOption())
->setHtmlContent($site->name)
->setContent($site->name)
->setValue($site->id);
return $optionModel;
})->toArray();
return $optionModels;
}
}