Contao\Versions::addToTemplate PHP Method

addToTemplate() public static method

Add a list of versions to a template
public static addToTemplate ( BackendTemplate $objTemplate )
$objTemplate BackendTemplate
    public static function addToTemplate(BackendTemplate $objTemplate)
    {
        $arrVersions = array();
        $objUser = \BackendUser::getInstance();
        $objDatabase = \Database::getInstance();
        // Get the total number of versions
        $objTotal = $objDatabase->prepare("SELECT COUNT(*) AS count FROM tl_version WHERE version>1" . (!$objUser->isAdmin ? " AND userid=?" : ""))->execute($objUser->id);
        $intLast = ceil($objTotal->count / 30);
        $intPage = \Input::get('vp') !== null ? \Input::get('vp') : 1;
        $intOffset = ($intPage - 1) * 30;
        // Validate the page number
        if ($intPage < 1 || $intLast > 0 && $intPage > $intLast) {
            header('HTTP/1.1 404 Not Found');
        }
        // Create the pagination menu
        $objPagination = new \Pagination($objTotal->count, 30, 7, 'vp', new \BackendTemplate('be_pagination'));
        $objTemplate->pagination = $objPagination->generate();
        // Get the versions
        $objVersions = $objDatabase->prepare("SELECT pid, tstamp, version, fromTable, username, userid, description, editUrl, active FROM tl_version" . (!$objUser->isAdmin ? " WHERE userid=?" : "") . " ORDER BY tstamp DESC, pid, version DESC")->limit(30, $intOffset)->execute($objUser->id);
        while ($objVersions->next()) {
            $arrRow = $objVersions->row();
            // Add some parameters
            $arrRow['from'] = max($objVersions->version - 1, 1);
            // see #4828
            $arrRow['to'] = $objVersions->version;
            $arrRow['date'] = date(\Config::get('datimFormat'), $objVersions->tstamp);
            $arrRow['description'] = \StringUtil::substr($arrRow['description'], 32);
            $arrRow['shortTable'] = \StringUtil::substr($arrRow['fromTable'], 18);
            // see #5769
            if ($arrRow['editUrl'] != '') {
                $arrRow['editUrl'] = preg_replace('/&(amp;)?rt=[^&]+/', '&amp;rt=' . REQUEST_TOKEN, ampersand($arrRow['editUrl']));
            }
            $arrVersions[] = $arrRow;
        }
        $intCount = -1;
        $arrVersions = array_values($arrVersions);
        // Add the "even" and "odd" classes
        foreach ($arrVersions as $k => $v) {
            $arrVersions[$k]['class'] = ++$intCount % 2 == 0 ? 'even' : 'odd';
            try {
                // Mark deleted versions (see #4336)
                $objDeleted = $objDatabase->prepare("SELECT COUNT(*) AS count FROM " . $v['fromTable'] . " WHERE id=?")->execute($v['pid']);
                $arrVersions[$k]['deleted'] = $objDeleted->count < 1;
            } catch (\Exception $e) {
                // Probably a disabled module
                --$intCount;
                unset($arrVersions[$k]);
            }
            // Skip deleted files (see #8480)
            if ($v['fromTable'] == 'tl_files' && $arrVersions[$k]['deleted']) {
                --$intCount;
                unset($arrVersions[$k]);
            }
        }
        $objTemplate->versions = $arrVersions;
    }

Usage Example

Example #1
0
 /**
  * Add the welcome screen
  *
  * @return string
  */
 protected function welcomeScreen()
 {
     \System::loadLanguageFile('explain');
     /** @var BackendTemplate|object $objTemplate */
     $objTemplate = new \BackendTemplate('be_welcome');
     $objTemplate->messages = \Message::generateUnwrapped() . \Backend::getSystemMessages();
     $objTemplate->loginMsg = $GLOBALS['TL_LANG']['MSC']['firstLogin'];
     // Add the login message
     if ($this->User->lastLogin > 0) {
         $formatter = new DateTimeFormatter(\System::getContainer()->get('translator'));
         $diff = $formatter->formatDiff(new \DateTime(date('Y-m-d H:i:s', $this->User->lastLogin)), new \DateTime());
         $objTemplate->loginMsg = sprintf($GLOBALS['TL_LANG']['MSC']['lastLogin'][1], '<time title="' . \Date::parse(\Config::get('datimFormat'), $this->User->lastLogin) . '">' . $diff . '</time>');
     }
     // Add the versions overview
     \Versions::addToTemplate($objTemplate);
     $objTemplate->welcome = sprintf($GLOBALS['TL_LANG']['MSC']['welcomeTo'], \Config::get('websiteTitle'));
     $objTemplate->showDifferences = \StringUtil::specialchars(str_replace("'", "\\'", $GLOBALS['TL_LANG']['MSC']['showDifferences']));
     $objTemplate->recordOfTable = \StringUtil::specialchars(str_replace("'", "\\'", $GLOBALS['TL_LANG']['MSC']['recordOfTable']));
     $objTemplate->systemMessages = $GLOBALS['TL_LANG']['MSC']['systemMessages'];
     $objTemplate->shortcuts = $GLOBALS['TL_LANG']['MSC']['shortcuts'][0];
     $objTemplate->shortcutsLink = $GLOBALS['TL_LANG']['MSC']['shortcuts'][1];
     $objTemplate->editElement = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['editElement']);
     return $objTemplate->parse();
 }
All Usage Examples Of Contao\Versions::addToTemplate