예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 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));
     }
 }