tl_page::addAliasButton PHP Method

addAliasButton() public method

Automatically generate the folder URL aliases
public addAliasButton ( array $arrButtons, DataContainer $dc ) : array
$arrButtons array
$dc DataContainer
return array
    public function addAliasButton($arrButtons, DataContainer $dc)
    {
        // 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) {
                $objPage = PageModel::findWithDetails($id);
                if ($objPage === null) {
                    continue;
                }
                $dc->id = $id;
                $dc->activeRecord = $objPage;
                $strAlias = '';
                // Generate new alias through save callbacks
                foreach ($GLOBALS['TL_DCA'][$dc->table]['fields']['alias']['save_callback'] as $callback) {
                    if (is_array($callback)) {
                        $this->import($callback[0]);
                        $strAlias = $this->{$callback[0]}->{$callback[1]}($strAlias, $dc);
                    } elseif (is_callable($callback)) {
                        $strAlias = $callback($strAlias, $dc);
                    }
                }
                // The alias has not changed
                if ($strAlias == $objPage->alias) {
                    continue;
                }
                // Initialize the version manager
                $objVersions = new Versions('tl_page', $id);
                $objVersions->initialize();
                // Store the new alias
                $this->Database->prepare("UPDATE tl_page 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;
    }