public function getWeightSchema(schema_ns\parser\element $element, $sMode, $sXMode, $bRoot = false) { $iResult = 0; if ($this->getMatch() || $bRoot) { if (!$this->getMatch()) { if ($bRoot && $sMode === $this->getMode() && $this->checkXMode($sXMode)) { $iResult = self::WEIGHT_ELEMENT_ROOT; if ($this->getXMode() && $this->getXMode() === $sXMode) { $iResult += 1; } } } else { if ($sMode === $this->getMode() && $this->checkXMode($sXMode)) { $iElement = $this->getWeightName($element->getNamespace(), $element->getName()); if ($type = $element->getType()) { $iType = $this->getWeightType($type); $iResult = $iType > $iElement ? $iType : $iElement; if ($this->getXMode() && $this->getXMode() === $sXMode) { $iResult += 1; } } else { $iResult = $iElement; } } } } return $iResult; }
public function addElement(parser\element $element, $iPosition = null) { if (!$element->getNamespace()) { $this->launchException('Element not valid, no namespace defined'); } if (isset($this->aElements[$element->getNamespace()][$element->getName()])) { $this->launchException('Element ever registered', get_defined_vars()); } $element->setPosition($iPosition); $element->setParticle($this); $this->aElements[$element->getNamespace()][$element->getName()] = $element; if (is_null($iPosition)) { $iPosition = count($this->aElementsIndexed); } $this->aElementsIndexed[$iPosition] = $element; }
public function setElement(schema\parser\element $el, $bDistinct = false) { $sName = $el->getName(); $bAdd = true; if (array_key_exists($sName, $this->aKeyElements)) { if ($el === $this->aKeyElements[$sName]) { $bAdd = false; } else { $el->useAlias(true); } } else { $this->aKeyElements[$sName] = $el; } if ($bAdd) { $sName = $el->asAlias(); if ($bDistinct) { $mContent = array('DISTINCT ', $sName); $this->setColumn($mContent, true); } else { $mContent = $sName; $this->setColumn($mContent); } } $this->aElements[] = $el; }
protected function addColumn(schema\parser\element $el) { $this->aColumns[$el->getName()] = $el; }
protected function addElement(parser\element $element) { $this->aElements[$element->getNamespace()][$element->getName()] = $element; return $element; }