/** * Parameter ::= [Key FirstValueSeparator] Values . * @param Mana_Seo_Model_ParsedUrl $token * @throws Exception * @return bool */ protected function _parseParameter($token) { $subToken = $token->zoomIn(); // split by "/", add correction for token beginning with "/" $tokens = $this->_scanUntilSeparator($subToken, $this->_schema->getFirstValueSeparator()); if ($tokens) { foreach ($tokens as $token) { // eat "/", mark as correction if there are no values after "/" if ($token->getTextToBeParsed()) { if ($this->_getParameterUrlKey($token)) { if (!$this->_setCurrentAttribute($token, $token->getParameterUrl()->getAttributeId(), $token->getParameterUrl()->getInternalName())) { return false; } switch ($token->getParameterUrl()->getType()) { case Mana_Seo_Model_ParsedUrl::PARAMETER_ATTRIBUTE: if ($this->_parseAttributeValues($token)) { return true; } break; case Mana_Seo_Model_ParsedUrl::PARAMETER_CATEGORY: if ($this->_parseCategoryValues($token)) { return true; } break; case Mana_Seo_Model_ParsedUrl::PARAMETER_PRICE: if ($this->_parsePriceValues($token)) { return true; } break; case Mana_Seo_Model_ParsedUrl::PARAMETER_TOOLBAR: if ($this->_parseToolbarValues($token)) { return true; } break; default: throw new Exception('Not implemented'); } continue; } } $subToken->setParameterUrl(null); if (!$this->_setCurrentAttribute($subToken, false, false)) { return false; } if ($this->_parseAttributeValues($subToken)) { return true; } } } return false; }