Пример #1
0
 /**
  * Auto-generate the FAQ alias if it has not been set yet
  *
  * @param mixed         $varValue
  * @param DataContainer $dc
  *
  * @return mixed
  *
  * @throws Exception
  */
 public function generateAlias($varValue, DataContainer $dc)
 {
     $autoAlias = false;
     // Generate alias if there is none
     if ($varValue == '') {
         $autoAlias = true;
         $varValue = StringUtil::generateAlias($dc->activeRecord->question);
     }
     $objAlias = $this->Database->prepare("SELECT id FROM tl_faq WHERE alias=?")->execute($varValue);
     // Check whether the news alias exists
     if ($objAlias->numRows > 1 && !$autoAlias) {
         throw new Exception(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $varValue));
     }
     // Add ID to alias
     if ($objAlias->numRows && $autoAlias) {
         $varValue .= '-' . $dc->id;
     }
     return $varValue;
 }
Пример #2
0
 /**
  * Auto-generate a page alias if it has not been set yet
  *
  * @param mixed         $varValue
  * @param DataContainer $dc
  *
  * @return string
  *
  * @throws Exception
  */
 public function generateAlias($varValue, DataContainer $dc)
 {
     $autoAlias = false;
     // Generate an alias if there is none
     if ($varValue == '') {
         $autoAlias = true;
         $varValue = StringUtil::generateAlias($dc->activeRecord->title);
         // Generate folder URL aliases (see #4933)
         if (Config::get('folderUrl')) {
             $objPage = PageModel::findWithDetails($dc->activeRecord->id);
             if ($objPage->folderUrl != '') {
                 $varValue = $objPage->folderUrl . $varValue;
             }
         }
     }
     $objAlias = $this->Database->prepare("SELECT id FROM tl_page WHERE id=? OR alias=?")->execute($dc->id, $varValue);
     // Check whether the page alias exists
     if ($objAlias->numRows > ($autoAlias ? 0 : 1)) {
         $arrPages = array();
         $strDomain = '';
         $strLanguage = '';
         while ($objAlias->next()) {
             $objCurrentPage = PageModel::findWithDetails($objAlias->id);
             $domain = $objCurrentPage->domain ?: '*';
             $language = !$objCurrentPage->rootIsFallback ? $objCurrentPage->rootLanguage : '*';
             // Store the current page's data
             if ($objCurrentPage->id == $dc->id) {
                 // Get the DNS and language settings from the POST data (see #4610)
                 if ($objCurrentPage->type == 'root') {
                     $strDomain = Input::post('dns');
                     $strLanguage = Input::post('language');
                 } else {
                     $strDomain = $domain;
                     $strLanguage = $language;
                 }
             } else {
                 // Check the domain and language or the domain only
                 if (Config::get('addLanguageToUrl')) {
                     $arrPages[$domain][$language][] = $objAlias->id;
                 } else {
                     $arrPages[$domain][] = $objAlias->id;
                 }
             }
         }
         $arrCheck = Config::get('addLanguageToUrl') ? $arrPages[$strDomain][$strLanguage] : $arrPages[$strDomain];
         // Check if there are multiple results for the current domain
         if (!empty($arrCheck)) {
             if ($autoAlias) {
                 $varValue .= '-' . $dc->id;
             } else {
                 throw new Exception(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $varValue));
             }
         }
     }
     return $varValue;
 }
Пример #3
0
 /**
  * Automatically generate the folder URL aliases
  *
  * @param array $arrButtons
  *
  * @return array
  */
 public function addAliasButton($arrButtons)
 {
     // Generate the aliases
     if (Input::post('FORM_SUBMIT') == 'tl_select' && isset($_POST['alias'])) {
         /** @var Symfony\Component\HttpFoundation\Session\SessionInterface $objSession */
         $objSession = System::getContainer()->get('session');
         $session = $objSession->all();
         $ids = $session['CURRENT']['IDS'];
         foreach ($ids as $id) {
             $objArticle = ArticleModel::findByPk($id);
             if ($objArticle === null) {
                 continue;
             }
             // Set the new alias
             $strAlias = StringUtil::generateAlias($objArticle->title);
             // The alias has not changed
             if ($strAlias == $objArticle->alias) {
                 continue;
             }
             // Initialize the version manager
             $objVersions = new Versions('tl_article', $id);
             $objVersions->initialize();
             // Store the new alias
             $this->Database->prepare("UPDATE tl_article SET alias=? WHERE id=?")->execute($strAlias, $id);
             // Create a new version
             $objVersions->create();
         }
         $this->redirect($this->getReferer());
     }
     // Add the button
     $arrButtons['alias'] = '<button type="submit" name="alias" id="alias" class="tl_submit" accesskey="a">' . $GLOBALS['TL_LANG']['MSC']['aliasSelected'] . '</button> ';
     return $arrButtons;
 }
Пример #4
0
 /**
  * @param $varValue
  * @param DataContainer $dc
  * @return string
  * @throws Exception
  */
 public function generateAlias($varValue, \DataContainer $dc)
 {
     // Generate an alias if there is none
     if ($varValue == '') {
         $varValue = StringUtil::generateAlias($dc->activeRecord->name);
     }
     $objAlias = $this->Database->prepare("SELECT id FROM tl_taxonomies WHERE (id=? OR alias=?) AND pid = ?")->execute($dc->id, $varValue, $dc->activeRecord->pid);
     // Check whether the Taxonomy alias exists
     if ($objAlias->numRows > 1) {
         $varValue .= '-' . $dc->id;
     }
     return $varValue;
 }
Пример #5
0
 /**
  * @param $varValue mixed The current alias (if available)
  * @param $intId    int The entity's id
  * @param $strTable string The entity's table
  * @param $strAlias string The value to use as a base for the alias
  *
  * @return string
  * @throws \Exception
  */
 public static function generateAlias($varValue, $intId, $strTable, $strAlias)
 {
     $autoAlias = false;
     // Generate alias if there is none
     if ($varValue == '') {
         $autoAlias = true;
         $varValue = \StringUtil::generateAlias($strAlias);
     }
     $objAlias = \Database::getInstance()->prepare("SELECT id FROM {$strTable} WHERE alias=?")->execute($varValue);
     // Check whether the alias exists
     if ($objAlias->numRows > 1 && !$autoAlias) {
         throw new \Exception(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $varValue));
     }
     // Add ID to alias
     if ($objAlias->numRows && $objAlias->id != $intId && $autoAlias || !$varValue) {
         $varValue .= '-' . $intId;
     }
     return $varValue;
 }
Пример #6
0
 /**
  * @param $varValue
  * @param array $arrData
  * @return string
  * @throws \Exception
  */
 protected function generateAlias($varValue, $arrData = array())
 {
     $autoAlias = false;
     if (!$arrData['title'] || empty($arrData)) {
         return 'Alias-' . substr(md5(time()), 12);
     }
     // Generate alias if there is none
     if ($varValue == '') {
         $autoAlias = true;
         $varValue = \StringUtil::generateAlias($arrData['title']);
     }
     $table = $this->strTableData;
     $pid = $this->strPid;
     $objAlias = null;
     if ($table && $pid) {
         $objAlias = $this->Database->prepare("SELECT id FROM " . $table . " WHERE alias = ? AND pid = ?")->execute($varValue, $pid);
     }
     // Check whether the alias exists
     if ($objAlias && $objAlias->numRows > 1 && !$autoAlias) {
         throw new \Exception(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $varValue));
     }
     // Add hash to alias
     if ($objAlias && $objAlias->numRows && $autoAlias) {
         $varValue .= '-' . substr(md5(time()), 12);
     }
     return $varValue;
 }
Пример #7
0
 public function generateAlias($strString)
 {
     return \StringUtil::generateAlias($strString);
 }
Пример #8
0
 /**
  * @param $arrButtons
  * @return string
  */
 public function addAliasButton($arrButtons)
 {
     if (\Input::post('FORM_SUBMIT') == 'tl_select' && isset($_POST['alias'])) {
         // init objects
         $objSession = \Session::getInstance();
         $objDataBase = \Database::getInstance();
         $session = $objSession->getData();
         $ids = $session['CURRENT']['IDS'];
         $strTable = \Input::get('table');
         if (!$strTable || !$objDataBase->tableExists($strTable)) {
             return $arrButtons;
         }
         foreach ($ids as $id) {
             $objData = $objDataBase->prepare('SELECT id, alias, title FROM ' . $strTable . ' WHERE id=?')->limit(1)->execute($id);
             if (!$objData->count()) {
                 continue;
             }
             $arrData = $objData->row();
             $strAlias = \StringUtil::generateAlias($arrData['title']);
             if ($strAlias == $arrData['alias']) {
                 continue;
             }
             $objAlias = $objDataBase->prepare('SELECT id FROM ' . $strTable . ' WHERE alias = ?')->execute($strAlias);
             if ($objAlias->numRows > 1) {
                 $strAlias .= '-' . $arrData['id'];
             }
             // Initialize the version manager
             $objVersions = new \Versions($strTable, $id);
             $objVersions->initialize();
             $objDataBase->prepare('UPDATE ' . $strTable . ' SET alias=? WHERE id=?')->execute($strAlias, $id);
             $objVersions->create();
         }
         \Controller::redirect(\Controller::getReferer());
     }
     $arrButtons['alias'] = '<input type="submit" name="alias" id="alias" class="tl_submit" accesskey="a" value="' . specialchars($GLOBALS['TL_LANG']['MSC']['aliasSelected']) . '"> ';
     return $arrButtons;
 }