1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94:
<?php
namespace Scene7\Commands;
use Scene7\Factory;
trait LayerFactory
{
protected $layers = [];
protected $layerNameMap = [];
public function newLayer($id = null, $name = null)
{
if (!($this->factory instanceof Factory)) {
throw new \RuntimeException('Factory not set');
}
if ($id === null) {
$id = $this->getMaxLayer() + 1;
}
$layer = $this->factory->newLayer($id, $name);
$this->addLayer($layer);
return $layer;
}
public function addLayer(Layer $layer)
{
$this->layers[$layer->getId()] = $layer;
return $this;
}
public function getMaxLayer()
{
return empty($this->layers) ? 0 : max(array_keys($this->layers));
}
public function getLayer($id)
{
return isset($this->layers[$id]) ? $this->layers[$id] : $this->newLayer($id);
}
public function getLayerByName($name)
{
return isset($this->layerNameMap[$name]) ? $this->layers[$this->layerNameMap[$name]] : $this->newLayer(null, $this->layerNameMap[$name]);
}
public function renderLayers($obscure = false)
{
$layers = '';
foreach ($this->layers as $layer) {
$layers .= '&' . $layer;
}
return $layers;
}
public function getQuery($obscure = false)
{
if ($obscure) {
} else {
$query = parent::getQuery();
$query .= $this->renderLayers();
}
return $query;
}
}