/** * 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; }
/** * 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; }
/** * 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; }
/** * @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; }
/** * @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; }
/** * @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; }
public function generateAlias($strString) { return \StringUtil::generateAlias($strString); }
/** * @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; }