/** * Check the news alias for duplicates * * @param mixed $varValue * @param DataContainer $dc * * @return string * * @throws Exception */ public function checkAlias($varValue, DataContainer $dc) { // get the news archive first if (($objArchive = \NewsArchiveModel::findById($dc->activeRecord->pid)) !== null) { // get the redirect page if (($objTarget = \PageModel::findById($objArchive->jumpTo)) !== null) { // check if there is a page with the same alias if (($objPage = \PageModel::findByAlias($varValue)) !== null) { // load the details $objTarget->current()->loadDetails(); $objPage->current()->loadDetails(); // check if page is on the same domain and language if ($objPage->domain == $objTarget->domain && (\Config::get('addLanguageToUrl') && $objPage->rootLanguage == $objTarget->rootLanguage)) { // append id $varValue .= '-' . $dc->id; } } } } // return the alias return $varValue; }
private function validate($name, $domain) { // check if a page exists if (!\Config::get('urlSuffix') && ($objPages = \PageModel::findByAlias($name)) !== null) { // check if short url has a domain if ($domain > 0) { $valid = true; while ($objPages->next()) { // load page details $objPages->current()->loadDetails(); // if one of the found pages is within the same domain, do not allow it if ($objPages->rootId == $domain) { $valid = false; break; } } if ($valid) { return; } } // otherwise throw exception throw new Exception(sprintf($GLOBALS['TL_LANG']['tl_short_urls']['pageExists'], $name)); } }